3 /* DEFINES *******************************************************************/
6 # define RTL_NUMBER_OF(x) (sizeof(x) / sizeof((x)[0]))
9 /* formerly located in kdbg/kdb_symbols.c */
10 #define TAG_KDBS 'SBDK'
11 #define TAG_KDBG 'GBDK'
13 /* TYPES *********************************************************************/
16 typedef struct _KDB_KTRAP_FRAME
20 ULONG Cr1
; /* reserved/unused */
24 } KDB_KTRAP_FRAME
, *PKDB_KTRAP_FRAME
;
26 typedef enum _KDB_BREAKPOINT_TYPE
28 KdbBreakPointNone
= 0,
29 KdbBreakPointSoftware
,
30 KdbBreakPointHardware
,
31 KdbBreakPointTemporary
32 } KDB_BREAKPOINT_TYPE
;
34 typedef enum _KDB_ACCESS_TYPE
42 typedef struct _KDB_BREAKPOINT
44 KDB_BREAKPOINT_TYPE Type
; /* Type of breakpoint */
45 BOOLEAN Enabled
; /* Whether the bp is enabled */
46 ULONG_PTR Address
; /* Address of the breakpoint */
47 BOOLEAN Global
; /* Whether the breakpoint is global or local to a process */
48 PEPROCESS Process
; /* Owning process */
49 PCHAR ConditionExpression
;
52 /* KdbBreakPointSoftware */
53 UCHAR SavedInstruction
;
54 /* KdbBreakPointHardware */
58 KDB_ACCESS_TYPE AccessType
;
61 } KDB_BREAKPOINT
, *PKDB_BREAKPOINT
;
63 typedef enum _KDB_ENTER_CONDITION
69 } KDB_ENTER_CONDITION
;
71 /* These values MUST be nonzero. They're used as bit masks. */
72 typedef enum _KDB_OUTPUT_SETTINGS
74 KD_DEBUG_KDSERIAL
= 1,
76 } KDB_OUTPUT_SETTINGS
;
78 /* FUNCTIONS *****************************************************************/
80 /* from i386/i386-dis.c */
85 IN ULONG IntelSyntax
);
91 /* from i386/kdb_help.S */
94 KdbpStackSwitchAndCall(
96 IN
VOID (*Function
)(VOID
));
100 extern PCHAR KdbInitFileBuffer
;
107 IN BOOLEAN EnteredOnSingleStep
);
111 IN PUNICODE_STRING Name
);
114 KdbpCliInterpretInitFile(VOID
);
125 OUT ULONG_PTR
*pulValue
);
127 /* from kdb_expr.c */
130 KdbpRpnEvaluateExpression(
132 IN PKDB_KTRAP_FRAME TrapFrame
,
133 OUT PULONGLONG Result
,
134 OUT PLONG ErrOffset OPTIONAL
,
135 OUT PCHAR ErrMsg OPTIONAL
);
138 KdbpRpnParseExpression(
140 OUT PLONG ErrOffset OPTIONAL
,
141 OUT PCHAR ErrMsg OPTIONAL
);
144 KdbpRpnEvaluateParsedExpression(
146 IN PKDB_KTRAP_FRAME TrapFrame
,
147 OUT PULONGLONG Result
,
148 OUT PLONG ErrOffset OPTIONAL
,
149 OUT PCHAR ErrMsg OPTIONAL
);
151 /* from kdb_symbols.c */
155 IN PVOID Address OPTIONAL
,
156 IN LPCWSTR Name OPTIONAL
,
157 IN INT Index OPTIONAL
,
158 OUT PLDR_DATA_TABLE_ENTRY
* pLdrEntry
);
162 extern PEPROCESS KdbCurrentProcess
;
163 extern PETHREAD KdbCurrentThread
;
164 extern LONG KdbLastBreakPointNr
;
165 extern ULONG KdbNumSingleSteps
;
166 extern BOOLEAN KdbSingleStepOver
;
167 extern PKDB_KTRAP_FRAME KdbCurrentTrapFrame
;
168 extern ULONG KdbDebugState
;
171 KdbpGetNextBreakPointNr(
172 IN ULONG Start OPTIONAL
);
175 KdbpGetBreakPointInfo(
176 IN ULONG BreakPointNr
,
177 OUT ULONG_PTR
*Address OPTIONAL
,
178 OUT KDB_BREAKPOINT_TYPE
*Type OPTIONAL
,
179 OUT UCHAR
*Size OPTIONAL
,
180 OUT KDB_ACCESS_TYPE
*AccessType OPTIONAL
,
181 OUT UCHAR
*DebugReg OPTIONAL
,
182 OUT BOOLEAN
*Enabled OPTIONAL
,
183 OUT BOOLEAN
*Global OPTIONAL
,
184 OUT PEPROCESS
*Process OPTIONAL
,
185 OUT PCHAR
*ConditionExpression OPTIONAL
);
188 KdbpInsertBreakPoint(
189 IN ULONG_PTR Address
,
190 IN KDB_BREAKPOINT_TYPE Type
,
191 IN UCHAR Size OPTIONAL
,
192 IN KDB_ACCESS_TYPE AccessType OPTIONAL
,
193 IN PCHAR ConditionExpression OPTIONAL
,
195 OUT PLONG BreakPointNr OPTIONAL
);
198 KdbpDeleteBreakPoint(
199 IN LONG BreakPointNr OPTIONAL
,
200 IN OUT PKDB_BREAKPOINT BreakPoint OPTIONAL
);
203 KdbpEnableBreakPoint(
204 IN LONG BreakPointNr OPTIONAL
,
205 IN OUT PKDB_BREAKPOINT BreakPoint OPTIONAL
);
208 KdbpDisableBreakPoint(
209 IN LONG BreakPointNr OPTIONAL
,
210 IN OUT PKDB_BREAKPOINT BreakPoint OPTIONAL
);
213 KdbpGetEnterCondition(
215 IN BOOLEAN FirstChance
,
216 OUT KDB_ENTER_CONDITION
*Condition
);
219 KdbpSetEnterCondition(
221 IN BOOLEAN FirstChance
,
222 IN KDB_ENTER_CONDITION Condition
);
234 KdbpGetCommandLineSettings(PCHAR p1
);
237 KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord
,
238 KPROCESSOR_MODE PreviousMode
,
240 PKTRAP_FRAME TrapFrame
,
241 BOOLEAN FirstChance
);
242 /* other functions */
245 KdbpSafeReadMemory(OUT PVOID Dest
,
250 KdbpSafeWriteMemory(OUT PVOID Dest
,
254 #define KdbpGetCharKeyboard(ScanCode) KdbpTryGetCharKeyboard(ScanCode, 0)
256 KdbpTryGetCharKeyboard(PULONG ScanCode
, ULONG Retry
);
258 #define KdbpGetCharSerial() KdbpTryGetCharSerial(0)
260 KdbpTryGetCharSerial(ULONG Retry
);
269 DbgEnableFile(PCH Filename
);
271 DbgDisableFile(PCH Filename
);
273 KbdDisableMouse(VOID
);
275 KbdEnableMouse(VOID
);