This repository was archived by the owner on Aug 31, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 227
Expand file tree
/
Copy pathdebug.h
More file actions
122 lines (97 loc) · 3.42 KB
/
debug.h
File metadata and controls
122 lines (97 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/* Copyright (C) 2003-2015 LiveCode Ltd.
This file is part of LiveCode.
LiveCode is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License v3 as published by the Free
Software Foundation.
LiveCode is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with LiveCode. If not see <http://www.gnu.org/licenses/>. */
#ifndef __MC_DEBUG_H__
#define __MC_DEBUG_H__
#include "object.h"
#include "stack.h"
//
// script debugger functions
//
// MW-2009-11-03: Add an 'info' field to the breakpoints
struct Breakpoint
{
Breakpoint(MCObjectHandle p_object, uint32_t p_line, MCStringRef p_info) :
object(p_object),
line(p_line),
info(p_info)
{
}
void Clear()
{
object = nil;
line = 0;
info.Reset();
}
MCObjectHandle object;
uint4 line;
MCAutoStringRef info;
};
// set the breakpoints to "button 1, 3"
struct Watchvar
{
Watchvar(MCObjectHandle p_object, MCNameRef p_handlername, MCNameRef p_varname, MCStringRef p_expression) :
object(p_object),
handlername(p_handlername),
varname(p_varname),
expression(p_expression)
{
}
void Clear()
{
object = nil;
handlername.Reset();
varname.Reset();
expression.Reset();
}
MCObjectHandle object;
MCNewAutoNameRef handlername;
MCNewAutoNameRef varname;
MCAutoStringRef expression;
};
// set the watchedvariables to "button 1, somehandler, somevar, someexp"
#define MAX_CONTEXTS 100
extern MCExecContext *MCECptr;
extern MCStackHandle MCtracestackptr;
extern Window MCtracewindow;
extern Boolean MCtrace;
extern Boolean MCtraceabort;
extern Boolean MCtracereturn;
extern MCObjectHandle MCtracedobject;
extern uint2 MCtracedelay;
extern uint4 MCtraceuntil;
// MW-2009-11-03: Make the breakpoints array dynamic
extern uint2 MCnbreakpoints;
extern Breakpoint *MCbreakpoints;
extern uint2 MCnwatchedvars;
extern Watchvar *MCwatchedvars;
extern MCExecContext *MCexecutioncontexts[MAX_CONTEXTS];
extern uint2 MCnexecutioncontexts;
extern uint2 MCdebugcontext;
extern Boolean MCmessagemessages;
extern MCNameRef MClogmessage;
struct MCExecValue;
extern void MCB_setmsg(MCExecContext &ctxt, MCStringRef p_string);
extern Exec_stat MCB_message(MCExecContext &ctxt, MCNameRef message, MCParameter *p);
extern Exec_stat MCB_prepmessage(MCExecContext &ctxt, MCNameRef message, uint2 line, uint2 pos, uint2 id, MCStringRef p_info = kMCEmptyString);
extern void MCB_break(MCExecContext &ctxt, uint2 line, uint2 pos);
extern void MCB_trace(MCExecContext &ctxt, uint2 line, uint2 pos);
extern bool MCB_error(MCExecContext &ctxt, uint2 line, uint2 pos, uint2 id);
extern void MCB_done(MCExecContext &ctxt);
extern void MCB_setvar(MCExecContext &ctxt, MCValueRef p_value, MCNameRef name);
extern void MCB_setvalue(MCExecContext &ctxt, MCExecValue p_value, MCNameRef name);
extern void MCB_parsebreaks(MCExecContext& ctxt, MCStringRef p_input);
extern bool MCB_unparsebreaks(MCStringRef& r_value);
extern void MCB_clearbreaks(MCObject *object);
extern void MCB_parsewatches(MCExecContext& ctxt, MCStringRef p_input);
extern bool MCB_unparsewatches(MCStringRef &r_watches);
extern void MCB_clearwatches(void);
#endif