如果需要通过实验来了解windows操作系统,免不了要进行内核调试,这边文章把一些内核调试途径和方法罗列下。
实验环境
Windows 8 Enterprise+ Hypher V
VM - 2003 SP2
VM - 2008 R2
工具使用
实验用到的工具主要是调试工具windbg,进行内核级的调试,如何向查看系统内核的情况,一般有四种方式,
WindbgLocal Debug,需要更改机器启动设置,重启机器。
LiveDebug,需要准备两台机器,从一台通过调试工具连接到目标机器来调试目标机器。
LiveKD,可以帮助我们在本机或者VM上面直接调试。
KernelDump,通过抓取内核Dump来查看内存状态。
Windbg的安装方法
Windbg的安装包包含在windows WDK或SDK中,在安装SDK的过程中选择Debug Tool For Windows选项,SDK会安装Windbg。
WindowsSDK下载
http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx
Symbol的配置
Windbg安装成功后,非常关键的一步是配置Symbol(符号表)缓存和网络地址,默认的路径为
SRV*your local symbolfolder*http://msdl.microsoft.com/download/symbols
需要设置用户环境变量
_NT_SYMBOL_PATH =SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols
Windbg Local Debug
管理员启动命令行
Bcdedit /debug ON
管理员启动windbg
选择File - Kernel Debug - Local
LiveKD的使用方法
LiveKD允许我们不需要另外一台物理机就可以进行内核调试,所以我实验的过程中大多数时候都会用LiveKD来实现,只是在特殊的查询可能要通过抓Kernel Dump的形式来演示,(因为LiveKD不能访问硬件,所以硬件相关的命令在LiveKD中得不到返回结果)。
LiveKD下载
http://technet.microsoft.com/en-us/sysinternals/bb897415.aspx
如果你的Windbg安装目录为默认目录的话,LiveKD可以自动找到相应的路径,否则的话你需要将LiveKD拷贝到Windbg的安装目录下。
Local machine
本机调试直接通过管理员权限运行命令行,转到LiveKD所在的目录,运行LiveKD。
Virtual machine
LiveKD也可以直接调试Hypher-V的VM虚拟机,通过LiveKD加参数-hvl列出所有的Hypher-V虚拟机名和Guid,然后选择要调试的虚拟机执行LiveKD加参数-hv后面接虚拟机名或Guid来启动调试。
抓Kernel Dump的方法
抓内核dump的方式很多,dump也有三种类型可供选择,
Small Memory Dump
Kernel Memory Dump
Complete Memory Dump
先来进行一些通用的配置。
确定抓取dump的类型,一般我实验只是演示查看,可以选择自动的方式。
确定dump文件写入的路径有足够的硬盘空间,dump的大小取决于dump的类型与内存使用量,如果选择自动的话你需要保证有比内存大小大的硬盘空间。
NotMyFault
这是最简单的方式,通过软件触发中断来生成dump文件。
下载NotMyFault工具http://download.sysinternals.com/files/NotMyFault.zip
运行命令行转到NotMyFault所在的路径下,运行命令NotMyFault.exe /crash
系统蓝屏,重启,dump就生成在你配置的路径下。默认为c:\windows\memory.dmp
键盘中断
如果你用ps/2键盘,修改注册表
找到以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
添加以下注册表项:
Name :CrashOnCtrlScroll
Data Type: REG_DWORD
Value :1
如果使用 USB 键盘,必须创建 CrashOnCtrlScroll 注册表项。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
添加以下注册表项:
Name :CrashOnCtrlScroll
Data Type: REG_DWORD
Value :1
接下来,按住右边ctrl键并且同时按两次scrolllock键,系统蓝屏重启,dump生成在配置目录下。
其他方式
http://support.microsoft.com/kb/972110/zh-cn
参考文档
http://msdn.microsoft.com/en-us/library/windows/hardware/ff553382(v=vs.85).aspx
http://support.microsoft.com/kb/311503
http://support.microsoft.com/kb/972110
http://support.microsoft.com/kb/969028
http://blogs.technet.com/b/markrussinovich/archive/2010/10/14/3360991.aspx