WinDbg
WinDbg支持以下三种类型的命令:
· 常规命令,用来调试进程
· 点命令,用来控制调试器
· 扩展命令,可以添加叫WinDbg的自定义命令,一般由扩展dll提供这些命令
PDB文件
PDB文件是由链接器产生的程序数据库文件。私有PDB文件包含私有和公有符号,源代码行,类型,本地和全局变量信息。公有PDB文件不包含类型,本地变量和源代码行信息,且只包含共有成员的调试信息。
Dump文件
利用Dump工具,你可以获得进程的快照信息。一个mini-dump包含当前进程的所有线程,线程栈信息和已加载模块信息。一个full-dump包括更多信息,如堆信息。
使用WinDbg调试
1. 启动WinDbg
要用WinDbg(x86)调式32位程序,用WinDbg(x64)调试64位程序。
2. 使用帮助
任何时候都可以使用!help命令来获取帮助,查看命令的使用方法。
3. 设置SymbolFile Path,指定了符号库,我们才能看到详细的类型信息
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
WinDbg会将微软的符号库下载指定的本地目录中,以上设置可以使用以下命令来实现:
.symfixc:\symbols,此命令表示要连接到Microsoft服务器下载调试符号文件,符号文件将被下载到c:\symbols目录中。
还可以使用.sympath命令来显示当前的符号路径设置。
4. 重新加载符号
如果进入调试之后才指定的符号路径,需要使用命令来重新加载符号
.reload
5. 加载调试扩展
调试扩展定义了很多命令来调试.net程序。使用调式非托管代码的命令来调试.net程序是非常困难的。下面的命令加载了用于调试.net程序的sos模块。
a. 对于.Net Runtime 2.0
.loadby sos mscorwks
b. 对于.Net Runtime 4.0
.loadby sos clr
sos是一个dll,定义了很多针对.net assembly的调试命令,sos.dll针对不同的runtime有不同的版