3 * kernel debugger prototypes
6 #ifndef __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
7 #define __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
9 #include <internal/ke.h>
10 #include <internal/ldr.h>
11 #include <ntdll/ldr.h>
13 #define KD_DEBUG_DISABLED 0x00
14 #define KD_DEBUG_GDB 0x01
15 #define KD_DEBUG_PICE 0x02
16 #define KD_DEBUG_SCREEN 0x04
17 #define KD_DEBUG_SERIAL 0x08
18 #define KD_DEBUG_BOCHS 0x10
19 #define KD_DEBUG_BOOTLOG 0x20
20 #define KD_DEBUG_MDA 0x40
21 #define KD_DEBUG_KDB 0x80
22 #define KD_DEBUG_KDSERIAL 0x100
23 #define KD_DEBUG_KDNOECHO 0x200
25 extern ULONG KdDebugState
;
27 KD_PORT_INFORMATION GdbPortInfo
;
28 KD_PORT_INFORMATION LogPortInfo
;
30 typedef enum _KD_CONTINUE_TYPE
33 kdDoNotHandleException
,
44 KdpPrintString (PANSI_STRING String
);
47 DebugLogWrite(PCH String
);
87 KdPutChar(UCHAR Value
);
93 KdGdbStubInit(ULONG Phase
);
96 KdGdbDebugPrint (LPSTR Message
);
99 KdDebugPrint (LPSTR Message
);
102 KdbCreateThreadHook(PCONTEXT Context
);
105 KdEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord
,
107 PKTRAP_FRAME TrapFrame
);
108 VOID
KdInitializeMda(VOID
);
109 VOID
KdPrintMda(PCH pch
);
111 #if !defined(KDBG) && !defined(DBG)
112 # define KDB_LOADUSERMODULE_HOOK(LDRMOD) do { } while (0)
113 # define KDB_DELETEPROCESS_HOOK(PROCESS) do { } while (0)
114 # define KDB_LOADDRIVER_HOOK(FILENAME, MODULE) do { } while (0)
115 # define KDB_UNLOADDRIVER_HOOK(MODULE) do { } while (0)
116 # define KDB_LOADERINIT_HOOK(NTOS, HAL) do { } while (0)
117 # define KDB_SYMBOLFILE_HOOK(FILENAME) do { } while (0)
118 # define KDB_CREATE_THREAD_HOOK(CONTEXT) do { } while (0)
120 # define KDB_LOADUSERMODULE_HOOK(LDRMOD) KdbSymLoadUserModuleSymbols(LDRMOD)
121 # define KDB_DELETEPROCESS_HOOK(PROCESS) KdbSymFreeProcessSymbols(PROCESS)
122 # define KDB_LOADDRIVER_HOOK(FILENAME, MODULE) KdbSymLoadDriverSymbols(FILENAME, MODULE)
123 # define KDB_UNLOADDRIVER_HOOK(MODULE) KdbSymUnloadDriverSymbols(MODULE)
124 # define KDB_LOADERINIT_HOOK(NTOS, HAL) KdbSymInit(NTOS, HAL)
125 # define KDB_SYMBOLFILE_HOOK(FILENAME) KdbSymProcessBootSymbols(FILENAME)
126 /*#define KDB_CREATE_THREAD_HOOK(CONTEXT) \
127 KdbCreateThreadHook(CONTEXT)
130 KdbSymLoadUserModuleSymbols(IN PLDR_MODULE LdrModule
);
133 KdbSymFreeProcessSymbols(IN PEPROCESS Process
);
136 KdbSymLoadDriverSymbols(IN PUNICODE_STRING Filename
,
137 IN PMODULE_OBJECT Module
);
140 KdbSymUnloadDriverSymbols(IN PMODULE_OBJECT ModuleObject
);
143 KdbSymProcessBootSymbols(IN PCHAR FileName
);
146 KdbSymInit(IN PMODULE_TEXT_SECTION NtoskrnlTextSection
,
147 IN PMODULE_TEXT_SECTION LdrHalTextSection
);
151 KdbSymPrintAddress(IN PVOID Address
);
154 KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord
,
155 KPROCESSOR_MODE PreviousMode
,
157 PKTRAP_FRAME TrapFrame
,
158 BOOLEAN HandleAlways
);
160 #endif /* KDBG || DBG */
163 DebugLogDumpMessages(VOID
);
165 #endif /* __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H */