windbg学习
1.copy C:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll Debugging Tools for Windows (x86)\SOS.dll
2.在c盘创建一个symbols目录
选择:创建一个符号库服务器命名为Symbols,分别创建两个目录OSSymbols(操作系统符号与二进制文件)和ProductSymbols(我们产品的符号和二进制文件)
设置环境变量:(步骤:我的电脑->选项->高级->系统选项)
path:D:\Program Files\Debugging Tools for Windows (x86);
(symsrv.dll、dbghelp.dll、symchk.exe、symstore.exe必须对符号服务器有读取与写入权限)
_NT_EXECUTABLE_IMAGE_PATH:SRV*C:\symbols*\\Symbols\OSSymbols*\\Symbols\ProductSymbols(windgb寻找pdb文件的地方)
_NT_SYMBOL_PATH:SRV*C:\symbols*\\Symbols\OSSymbols*\\Symbols\ProductSymbols*http://msdl.microsoft.com/download/symbols;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\symbols(windgb寻找微型转储文件{当系统崩溃时,包含了应用程序的状态}的地方)
或者
windbg界面:
file->image file path (ctrl+i) SRV*C:\symbols*\\Symbols\OSSymbols*\\Symbols\ProductSymbols
file->symbol file path (ctrl+s) 输入:SRV*C:\symbols*\\Symbols\OSSymbols*\\Symbols\ProductSymbols*http://msdl.microsoft.com/download/symbols;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\symbols
然后确定
1.创建一个SimpleConsoleApp.exe程序
2.打开程序windbg.exe,用open execuable打开SimpleConsoleApp.exe程序
在command窗口执行
lm:列出已加载模块 v查看所有已加载模块的详细信息
ld:强制加载符号
.reload:重新加载所有未使用的符号
!sym:noisy 确切的了解windbg将符号加载到哪里及为何加载到哪里? quiet 关闭noisy输出
|:显示进程状态
s: |0s设置0为活动进程
g:让程序继续运行
~:显示当前进程中的活动线程
.create:创建进程
.attach:附加进程
.tlist:显示服务对应的进程 -v
.chain:显示已加载的扩展代码如sos
!eeversion 查看sos的版本号
学习资源
1.http://blogs.msdn.com/johan/archive/2007/11/13/getting-started-with-windbg-part-i.aspx
2.http://www.cnblogs.com/lbq1221119/archive/2007/12/02/980274.html
3.http://www.cnblogs.com/560889223/archive/2008/11/14/1333209.html