Debugging Tools for Windows

本地内核调试

KD和WinDbg可以进行本地内核调试。这种调试是在单台计算机上进行的内核调试。换句话说,调试器调试自己正在运行的计算机。

本地内核调试仅在Microsoft Windows XP和之后版本的Windows中支持。只有拥有调试权限的用户可以开始本地内核调试。

开始本地内核调试

使用/debug 引导开关来启用本地内核调试。关于该开关的更多信息,查看配置目标机的软件

要开始一个本地内核调试会话,使用-kl命令行选项启动调试器、点击Kernel Debugging 对话框(File | Kernel Debug)的Local 选项卡、或使用.attach -k命令。关于开始这种会话的更多信息,查看附加到目标机(内核模式)

不支持的命令

本地内核调试会话中并不支持所有命令。一般来说,不能使用任何使得目标机停止的命令,因为不能恢复操作。

特别是,不能使用下面一些命令:

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

可以使用的命令

所有的内存输入和输出命令可用。可以自由的读取用户内存和内核内存,也可以写入内存。要确认不会写到错误的内核内存中,因为这会破坏数据结构并经常造成计算机停止响应(即崩溃)。

本地内核调试的困难

本地内核调试是非常敏感的操作。注意不要破坏系统或使得系统崩溃。

本地内核调试一个最困难的地方是机器状态一直在改变。内存在换入和换出、活动进程在不断改变、虚拟地址上下文也不会保持固定。但是,在这些情况下,还是可以慢慢对一些东西进行有效的分析,例如特定的设备状态。

内核模式驱动和Windows系统经常会通过DbgPrint 和相关函数发送信息给内核调试器。在本地内核调试时,这些消息不会自动显示出来。可以通过!dbgprint扩展命令来显示。

LiveKD

LiveKD 工具可以模拟本地内核调试。该工具会创建内核内存的"快照" 转储文件,而在生成快照时不会实际停止系统。 (因此,该快照可能不能实际反映计算机某一时刻的状态。)

LiveKD 不是Windows调试工具包的一部分。可以在SysInternals 网站上下载 LiveKd

Build machine: CAPEBUILD