怎么安装windbg? 在Win8中,要通过安装windows 8 SDK来安装.
安装之后,在C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64中。
比较重要的是就是symbol file的配置。下载在
http://msdn.microsoft.com/en-us/windows/hardware/gg463028#Download_windows
。
symbol配置成功的关键,在于你的OS和下载的symbol file是否匹配.
查OS version, 在cmd下输入 msinfo32, 在"系统摘要"里找到"硬件抽象层",看其中的版本号,如6.2.9200.xxxx
symbol file在下载的时候,它就明确你它所支持的OS,比如上面的symbol file下载连接中,有一个是
Windows_Win8.9200.16384.120725-1247.x64FRE.Symbols(attention: symbol file : free(retail) or checked)
open Kernel Debug in Windbg, it will output :
Built by: 9200.16384.amd64fre.win8_rtm.120725-1247,
你可以看到,当前系统是9200.16384,符号用的是free类型。
红色部分的数字要和OS version是后两组数字一致,不然,这个符号表就无法 使用.
还有一种比较明确的对比方法,就是看你当前系统的一个模块与其对应的符号表是否一致,
如在windbg中输入
!itoldyouso ntkrnimpl [symbol_path]\ntkrnimpl.pdb
如果不一致,会有sig MISMATCH 输出,就是签名不一致。
使用 !lmi ntkrnimpl 可以直接查看可模块签名.
在调度symbol file过程中比较有用的命令:
!sym noisy 输出更多的debug信息。
.reload /f nt 加载NT模块看是否成功.
version 查询更多的OS信息。
.sympath SRV*C:\msftpdbs*http://msdl.microsoft.com/download/symbols 从symbol server下载符号.
sympath+ C:\sym1 增加搜索路径.
参考文献:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff560260%28v=vs.85%29.aspx
http://www.cnblogs.com/BiffoLee/archive/2011/03/25/1995892.html
http://my.oschina.net/u/587236/blog/118534