43
43
Classes, SysUtils, Forms, Project, SourceMarks, Debugger, ProjectDefs,
44
Laz_XMLCfg, IDEOptionsIntf, LazarusIDEStrConsts;
44
IDEOptionsIntf, LazarusIDEStrConsts, Laz2_XMLCfg;
47
47
TDebugDialogType = (
81
105
function GetDebuggerClass(const AIndex: Integer): TDebuggerClass;
83
107
FDestroying: boolean;
84
FCallStack: TIDECallStack;
108
FCallStack: TCallStackMonitor;
85
109
FDisassembler: TIDEDisassembler;
86
110
FExceptions: TIDEExceptions;
87
111
FSignals: TIDESignals;
88
112
FBreakPoints: TIDEBreakPoints;
89
113
FBreakPointGroups: TIDEBreakPointGroups;
114
FLocals: TLocalsMonitor;
91
115
FLineInfo: TIDELineInfo;
92
FWatches: TIDEWatches;
116
FWatches: TWatchesMonitor;
117
FThreads: TThreadsMonitor;
93
118
FRegisters: TIDERegisters;
119
FSnapshots: TSnapshotManager;
94
120
FManagerStates: TDebugManagerStates;
95
121
function FindDebuggerClass(const Astring: String): TDebuggerClass;
96
122
function GetState: TDBGState; virtual; abstract;
106
132
procedure SetupMainBarShortCuts; virtual; abstract;
107
133
procedure SetupSourceMenuShortCuts; virtual; abstract;
108
134
procedure UpdateButtonsAndMenuItems; virtual; abstract;
135
procedure UpdateToolStatus; virtual; abstract;
110
137
procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig;
111
138
Merge: boolean); virtual; abstract;
128
155
function DoRunToCursor: TModalResult; virtual; abstract;
129
156
function DoStopProject: TModalResult; virtual; abstract;
130
157
procedure DoToggleCallStack; virtual; abstract;
158
procedure DoSendConsoleInput(AText: String); virtual; abstract;
131
159
procedure ProcessCommand(Command: word; var Handled: boolean); virtual; abstract;
133
161
procedure LockCommandProcessing; virtual; abstract;
138
166
procedure EndDebugging; virtual; abstract;
140
168
function Evaluate(const AExpression: String; var AResult: String;
141
var ATypeInfo: TDBGType): Boolean; virtual; abstract; // Evaluates the given expression, returns true if valid
169
var ATypeInfo: TDBGType;
170
EvalFlags: TDBGEvaluateFlags = []): Boolean; virtual; abstract; // Evaluates the given expression, returns true if valid
142
171
function Modify(const AExpression: String; const ANewValue: String): Boolean; virtual; abstract; // Modify the given expression, returns true if valid
173
function GetFullFilename(const AUnitinfo: TDebuggerUnitInfo;
174
out Filename: string; AskUserIfNotFound: Boolean): Boolean; virtual; abstract;
144
175
function GetFullFilename(var Filename: string; AskUserIfNotFound: Boolean): Boolean; virtual; abstract;
177
procedure EvaluateModify(const AExpression: String); virtual; abstract;
145
178
procedure Inspect(const AExpression: String); virtual; abstract;
147
180
function DoCreateBreakPoint(const AFilename: string; ALine: integer;
148
181
WarnIfNoDebugger: boolean): TModalResult; virtual; abstract;
182
function DoCreateBreakPoint(const AFilename: string; ALine: integer;
183
WarnIfNoDebugger: boolean;
184
out ABrkPoint: TIDEBreakPoint): TModalResult; virtual; abstract;
185
function DoCreateBreakPoint(const AnAddr: TDBGPtr;
186
WarnIfNoDebugger: boolean;
187
out ABrkPoint: TIDEBreakPoint): TModalResult; virtual; abstract;
149
188
function DoDeleteBreakPoint(const AFilename: string; ALine: integer
150
189
): TModalResult; virtual; abstract;
151
190
function DoDeleteBreakPointAtMark(const ASourceMark: TSourceMark
152
191
): TModalResult; virtual; abstract;
154
193
function ShowBreakPointProperties(const ABreakpoint: TIDEBreakPoint): TModalresult; virtual; abstract;
155
function ShowWatchProperties(const AWatch: TIDEWatch; AWatchExpression: String = ''): TModalresult; virtual; abstract;
194
function ShowWatchProperties(const AWatch: TCurrentWatch; AWatchExpression: String = ''): TModalresult; virtual; abstract;
197
procedure CreateDebugDialog(Sender: TObject; aFormName: string;
198
var AForm: TCustomForm; DoDisableAutoSizing: boolean); virtual;
157
199
procedure ViewDebugDialog(const ADialogType: TDebugDialogType;
158
200
BringToFront: Boolean = True; Show: Boolean = true;
159
201
DoDisableAutoSizing: boolean = false); virtual; abstract;
202
procedure ViewDisassembler(AnAddr: TDBGPtr;
203
BringToFront: Boolean = True; Show: Boolean = true;
204
DoDisableAutoSizing: boolean = false); virtual; abstract;
161
206
property Commands: TDBGCommands read GetCommands; // All current available commands of the debugger
162
207
property Debuggers[const AIndex: Integer]: TDebuggerClass read GetDebuggerClass;
166
211
property BreakPoints: TIDEBreakPoints read FBreakpoints; // A list of breakpoints for the current project
167
212
property BreakPointGroups: TIDEBreakPointGroups read FBreakPointGroups;
168
213
property Exceptions: TIDEExceptions read FExceptions; // A list of exceptions we should ignore
169
property CallStack: TIDECallStack read FCallStack;
214
property CallStack: TCallStackMonitor read FCallStack;
170
215
property Disassembler: TIDEDisassembler read FDisassembler;
171
property Locals: TIDELocals read FLocals;
216
property Locals: TLocalsMonitor read FLocals;
172
217
property LineInfo: TIDELineInfo read FLineInfo;
173
218
property Registers: TIDERegisters read FRegisters;
174
219
property Signals: TIDESignals read FSignals; // A list of actions for signals we know of
175
property Watches: TIDEWatches read FWatches;
220
property Watches: TWatchesMonitor read FWatches;
221
property Threads: TThreadsMonitor read FThreads;
222
property Snapshots: TSnapshotManager read FSnapshots;
176
223
{$IFDEF DBG_WITH_DEBUGGER_DEBUG}
177
224
property Debugger: TDebugger read GetDebugger;
211
259
else Result := TDebuggerClass(MDebuggerClasses.Objects[idx]);
262
procedure TBaseDebugManager.CreateDebugDialog(Sender: TObject; aFormName: string;
263
var AForm: TCustomForm; DoDisableAutoSizing: boolean);
214
268
function TBaseDebugManager.GetDebuggerClass(const AIndex: Integer): TDebuggerClass;
216
270
Result := TDebuggerClass(MDebuggerClasses.Objects[AIndex]);