本地内核模式调试

调试工具 for Windows支持本地内核调试。 这是在单个计算机上进行内核模式调试。 换句话说,调试器在正在调试的同一计算机上运行。

设置本地Kernel-Mode调试

有关设置本地内核模式调试的信息,请参阅设置本地Kernel-Mode单台计算机的调试。

启动调试会话

使用 WinDbg

以管理员角色打开 WinDbg。 在"文件 "菜单 上,选择" 内核调试"。 在"内核调试"对话框中,打开"本地 "选项卡 。选择"确定 "

还可以以管理员角色打开命令提示符窗口并输入以下命令来启动与 WinDbg 的会话:

windbg -kl

使用 KD

以管理员角色打开命令提示符窗口,并输入以下命令:

kd -kl

不可用的命令

并非所有命令都在本地内核调试会话中可用。 通常,不能使用任何导致目标计算机停止(甚至暂时停止)的命令,因为无法恢复操作。

特别是,不能使用以下命令:

  • 执行命令,例如 (Go) p (Step) t (Trace) wt (Trace and Watch Data) tb (Trace to Next Branch) gh (Go with Exception Handled) gn (Go with Exception not Handled)

  • 关闭和转储文件命令,例如 .crash.dump.reboot

  • 断点命令,例如 bpbubabc、bd、bebl

  • 注册显示命令,例如 r 和变体

  • 堆栈跟踪命令,例如 k 和变体

如果使用 WinDbg 执行本地内核调试,则所有等效的菜单命令和按钮也不可用。

可用的命令

所有内存输入和输出命令都可用。 可以从用户内存和内核内存自由读取。 还可以写入内存。 请确保不要写入内核内存的错误部分,因为它可能会损坏数据结构,并经常导致计算机停止响应 (即崩溃) 。

执行本地内核调试时出现问题

本地内核调试是一项非常复杂的操作。 请注意不要损坏或使系统崩溃。

本地内核调试的最困难方面之一是计算机状态不断变化。 内存是分页的,活动进程会不断更改,并且虚拟地址上下文不会保持不变。 但是,在这些情况下,你可以有效地分析缓慢变化的情况,例如某些设备状态。

内核模式驱动程序和Windows操作系统经常使用 DbgPrint 和相关函数将消息发送到内核调试器。 在本地内核调试期间不会自动显示这些消息。 可以使用 ! dbgprint 扩展显示 它们。

LiveKD

LiveKD 工具模拟本地内核调试。 此工具会创建内核内存的"快照"转储文件,而不会在生成此快照时实际停止内核。 (因此,快照实际上可能不会显示 computer.)

LiveKD 不是 Windows 调试工具的一部分。 可以从 Sysinternals 站点Windows LiveKd