windbg在软件调试中非常实用,尤其是分析dmp文件,一般产品发布后,用户使用时产生的崩溃不会在开发环境中还原,因此使用windgb可以通过分析dmp文件来确认崩溃的地方。
本篇介绍windbg的基本使用
1.设置符号文件路径
File-->Symbol Search Path
2.设置源码路径
File-->Source Search Path
3.打开dmp文件
File-->Open Crash Dump
输入!analyze -v命令
看不到任何崩溃的信息,原来是没有加载windbg自己的符号文件,因此配置加载windbg的符号文件:srv*D:\dmpdebug\windbgsymbols*http://msdl.microsoft.com/download/symbols;D:\dmpdebug\pdb\3.6.8.13
D:\dmpdebug\windbgsymbols是windbg符号文件存放目录,D:\dmpdebug\pdb\3.6.8.13是pdb符号文件的路径,多个PDB的路径以英文分号(;)作为间隔,windbg的符号文件路径指向微软件的服务器地址,会自动下载,这个下载过程时间比较久,我这里大约有用了30分钟
下载完成的文件
执行!analyze -v命令
源代码已经不匹配了
g是执行命令,可以指定从某处执行,也可以在执行到某处时断下,如 :
g = 00423aef 00423af3
修改当前eip为00423aef,执行到00423af3处中断
当然也可以让某个线程继续执行,而其他的线程处在冻结状态。如:
~1 g 一号线程继续执行
p 单步步过
t 单步步入
gu 执行到返回
gc 从断点处继续执行,用在条件断点内
gn 忽略异常继续执行。允许应用程序的异常处理程序来处理异常。
gh 异常被处理,继续执行。