2 #include "internal/kd.h"
4 /* DEFINES *******************************************************************/
6 /* formerly located in kdbg/kdb_symbols.c */
7 #define TAG_KDBS 'SBDK'
8 #define TAG_KDBG 'GBDK'
10 /* TYPES *********************************************************************/
13 typedef struct _KDB_KTRAP_FRAME
17 ULONG Cr1
; /* reserved/unused */
21 } KDB_KTRAP_FRAME
, *PKDB_KTRAP_FRAME
;
23 typedef enum _KDB_BREAKPOINT_TYPE
25 KdbBreakPointNone
= 0,
26 KdbBreakPointSoftware
,
27 KdbBreakPointHardware
,
28 KdbBreakPointTemporary
29 } KDB_BREAKPOINT_TYPE
;
31 typedef enum _KDB_ACCESS_TYPE
39 typedef struct _KDB_BREAKPOINT
41 KDB_BREAKPOINT_TYPE Type
; /* Type of breakpoint */
42 BOOLEAN Enabled
; /* Whether the bp is enabled */
43 ULONG_PTR Address
; /* Address of the breakpoint */
44 BOOLEAN Global
; /* Whether the breakpoint is global or local to a process */
45 PEPROCESS Process
; /* Owning process */
46 PCHAR ConditionExpression
;
49 /* KdbBreakPointSoftware */
50 UCHAR SavedInstruction
;
51 /* KdbBreakPointHardware */
55 KDB_ACCESS_TYPE AccessType
;
58 } KDB_BREAKPOINT
, *PKDB_BREAKPOINT
;
60 typedef enum _KDB_ENTER_CONDITION
66 } KDB_ENTER_CONDITION
;
68 /* These values MUST be nonzero. They're used as bit masks. */
69 typedef enum _KDB_OUTPUT_SETTINGS
71 KD_DEBUG_KDSERIAL
= 1,
73 } KDB_OUTPUT_SETTINGS
;
75 /* FUNCTIONS *****************************************************************/
77 /* from i386/i386-dis.c */
82 IN ULONG IntelSyntax
);
88 /* from i386/kdb_help.S */
91 KdbpStackSwitchAndCall(
93 IN
VOID (*Function
)(VOID
));
97 extern PCHAR KdbInitFileBuffer
;
104 IN BOOLEAN EnteredOnSingleStep
);
108 IN PUNICODE_STRING Name
);
111 KdbpCliInterpretInitFile(VOID
);
122 OUT ULONG_PTR
*pulValue
);
124 /* from kdb_expr.c */
127 KdbpRpnEvaluateExpression(
129 IN PKDB_KTRAP_FRAME TrapFrame
,
130 OUT PULONGLONG Result
,
131 OUT PLONG ErrOffset OPTIONAL
,
132 OUT PCHAR ErrMsg OPTIONAL
);
135 KdbpRpnParseExpression(
137 OUT PLONG ErrOffset OPTIONAL
,
138 OUT PCHAR ErrMsg OPTIONAL
);
141 KdbpRpnEvaluateParsedExpression(
143 IN PKDB_KTRAP_FRAME TrapFrame
,
144 OUT PULONGLONG Result
,
145 OUT PLONG ErrOffset OPTIONAL
,
146 OUT PCHAR ErrMsg OPTIONAL
);
148 /* from kdb_symbols.c */
152 IN PVOID Address OPTIONAL
,
153 IN LPCWSTR Name OPTIONAL
,
154 IN INT Index OPTIONAL
,
155 OUT PLDR_DATA_TABLE_ENTRY
* pLdrEntry
);
159 extern PEPROCESS KdbCurrentProcess
;
160 extern PETHREAD KdbCurrentThread
;
161 extern LONG KdbLastBreakPointNr
;
162 extern ULONG KdbNumSingleSteps
;
163 extern BOOLEAN KdbSingleStepOver
;
164 extern PKDB_KTRAP_FRAME KdbCurrentTrapFrame
;
165 extern ULONG KdbDebugState
;
168 KdbpGetNextBreakPointNr(
169 IN ULONG Start OPTIONAL
);
172 KdbpGetBreakPointInfo(
173 IN ULONG BreakPointNr
,
174 OUT ULONG_PTR
*Address OPTIONAL
,
175 OUT KDB_BREAKPOINT_TYPE
*Type OPTIONAL
,
176 OUT UCHAR
*Size OPTIONAL
,
177 OUT KDB_ACCESS_TYPE
*AccessType OPTIONAL
,
178 OUT UCHAR
*DebugReg OPTIONAL
,
179 OUT BOOLEAN
*Enabled OPTIONAL
,
180 OUT BOOLEAN
*Global OPTIONAL
,
181 OUT PEPROCESS
*Process OPTIONAL
,
182 OUT PCHAR
*ConditionExpression OPTIONAL
);
185 KdbpInsertBreakPoint(
186 IN ULONG_PTR Address
,
187 IN KDB_BREAKPOINT_TYPE Type
,
188 IN UCHAR Size OPTIONAL
,
189 IN KDB_ACCESS_TYPE AccessType OPTIONAL
,
190 IN PCHAR ConditionExpression OPTIONAL
,
192 OUT PLONG BreakPointNr OPTIONAL
);
195 KdbpDeleteBreakPoint(
196 IN LONG BreakPointNr OPTIONAL
,
197 IN OUT PKDB_BREAKPOINT BreakPoint OPTIONAL
);
200 KdbpEnableBreakPoint(
201 IN LONG BreakPointNr OPTIONAL
,
202 IN OUT PKDB_BREAKPOINT BreakPoint OPTIONAL
);
205 KdbpDisableBreakPoint(
206 IN LONG BreakPointNr OPTIONAL
,
207 IN OUT PKDB_BREAKPOINT BreakPoint OPTIONAL
);
210 KdbpGetEnterCondition(
212 IN BOOLEAN FirstChance
,
213 OUT KDB_ENTER_CONDITION
*Condition
);
216 KdbpSetEnterCondition(
218 IN BOOLEAN FirstChance
,
219 IN KDB_ENTER_CONDITION Condition
);
231 KdbpGetCommandLineSettings(PCHAR p1
);
234 KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord
,
235 KPROCESSOR_MODE PreviousMode
,
237 PKTRAP_FRAME TrapFrame
,
238 BOOLEAN FirstChance
);
239 /* other functions */
242 KdbpSafeReadMemory(OUT PVOID Dest
,
247 KdbpSafeWriteMemory(OUT PVOID Dest
,
251 #define KdbpGetCharKeyboard(ScanCode) KdbpTryGetCharKeyboard(ScanCode, 0)
253 KdbpTryGetCharKeyboard(PULONG ScanCode
, ULONG Retry
);
255 #define KdbpGetCharSerial() KdbpTryGetCharSerial(0)
257 KdbpTryGetCharSerial(ULONG Retry
);
266 DbgEnableFile(PCH Filename
);
268 DbgDisableFile(PCH Filename
);
270 KbdDisableMouse(VOID
);
272 KbdEnableMouse(VOID
);