本帖最后由 Qter 于 2024-2-22 18:41 编辑
D:\\release\\Package\\mCloudWin(V7.1.2)A001\\pdb:E:\\gitcode\\712\\mCloud_ClientWin712\\dll\\release
!analyze -v
https://zhuanlan.zhihu.com/p/43972006下载,下载官方版本 [color=inherit !important]Download Debugging Tools for Windows - WinDbg - Windows driversdocs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools
配置
1.使用dump文件查找崩溃的位置 首先打开dump文件。 输入!analyze -v(原来写的!anaylze -v 感谢 尚逸的提醒) 查看数据
输入!anaylze -v 查看数据发现什么都没有 输入~*kbn 查看所有的线程 然后向上查找KERNELBASE!UnhandledExceptionFilter+0x25a 这个一个 未处理的异常
输入~*kbn 查看所有的线程复制第三个参数00b8d9d0 输入 dd 00b8d9d0
输入 dd 00b8d9d0然后输入 .exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数)
.exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数)然后kbn
kbn然后发现自己熟悉代码 双击崩溃位置,发现跳不过去 打开call stack
打开call stack双击崩溃的位置
双击崩溃的位置成功跳转代码 打开local
打开local查看崩溃前的数据
查看崩溃前的数据这里就可以找到错误的位置以及出问题的原因了。 2.调试程序,由于某些情况下,pdb与现在版本不一致(vs中修改了些的代码,或者vs抽风)vs无法附加进程,但是bug又是偶现的,好不容易出现一次又不能破坏现场。就可以直接使用windbg直接附加到进程进行调试程序。
附加到进程此时程序会暂停 打开cpp文件 点击上面的小图标,可以打开调用堆栈等窗口。 选中你需要调试的代码F9添加断点,跟vs一致。
添加断点F5或者输入g 继续运行
断点停止成功可以看到当前运行的数据都可以看到了。
|