使用 WinDbg 启动程序并捕获崩溃转储的完整流程

1. 启动 WinDbg 并配置符号路径

首先打开 WinDbg,配置符号服务器以便获取调试符号:

.symfix                 // 设置默认微软符号服务器
.sympath+ C:\MySymbols  // 添加自定义符号路径
.reload                 // 重新加载符号

2. 启动目标应用程序

方法1:直接通过 WinDbg 启动

File → Open Executable...
或
Ctrl+E

选择你的可执行文件,WinDbg 会立即启动该程序。

方法2:使用命令行启动

windbg.exe -o "C:\Path\To\YourApp.exe" [参数]

3. 设置崩溃时自动捕获转储

在程序运行前设置自动转储捕获:

.symopt+0x40           // 启用延迟符号加载
.dump /ma C:\dumps\crash.dmp  // 设置转储路径(但此时不会执行)

更推荐设置崩溃时自动执行的命令:

.events                // 查看当前事件过滤器
sxe -c ".dump /ma C:\dumps\crash.dmp; q" av  // 访问冲突时捕获转储并退出
g                     // 开始运行程序

4. 程序崩溃时的处理

当程序崩溃时,WinDbg 会自动中断,此时:

手动创建转储文件(如果未设置自动捕获)

.dump /ma C:\dumps\crash_manual.dmp

分析崩溃点

!analyze -v            // 自动分析崩溃原因
kb                     // 查看调用堆栈

5. 高级转储选项

创建完整转储(推荐)

.dump /ma C:\dumps\full_crash.dmp

/ma 选项表示创建包含完整内存、句柄和线程信息的转储。

创建小型转储

.dump /m C:\dumps\mini_crash.dmp

6. 转储后分析

捕获转储后,可以重新用 WinDbg 分析:

windbg.exe -z C:\dumps\crash.dmp

注意事项

  1. 确保有足够的磁盘空间存放转储文件(完整转储可能很大)

  2. 对于服务程序,可能需要附加(attach)而不是直接启动

  3. 转储路径需要有写入权限

  4. 对于.NET应用程序,考虑加载SOS扩展进行更深入分析

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值