本帖最后由 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![](https://pic4.zhimg.com/v2-20ef38870667e71aeabbc54da52663b7_ipico.jpg)
配置 ![](https://pic3.zhimg.com/80/v2-daf909a12125edb7b6fd50417912bee2_720w.webp)
1.使用dump文件查找崩溃的位置 ![](https://pic3.zhimg.com/80/v2-e88ff80aaa672c3eec074ac8bb7e73ce_720w.webp) 首先打开dump文件。 输入!analyze -v(原来写的!anaylze -v 感谢 尚逸的提醒) 查看数据 ![](https://pic1.zhimg.com/80/v2-c1ade6161cebac3406e7431954372ae0_720w.webp)
输入!anaylze -v 查看数据发现什么都没有 输入~*kbn 查看所有的线程 然后向上查找KERNELBASE!UnhandledExceptionFilter+0x25a 这个一个 未处理的异常 ![](https://pic1.zhimg.com/80/v2-98dbe4b79670864c91322d30c481f480_720w.webp)
输入~*kbn 查看所有的线程复制第三个参数00b8d9d0 输入 dd 00b8d9d0 ![](https://pic4.zhimg.com/80/v2-6779e90f06ce323b17b542f9cac6f8cb_720w.webp)
输入 dd 00b8d9d0然后输入 .exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数) ![](https://pic2.zhimg.com/80/v2-c4ae1ac521cb3bb27e73f33e849f4d91_720w.webp)
.exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数)然后kbn ![](https://pic3.zhimg.com/80/v2-7687cad85a44dd7111211313fcd7bdbe_720w.webp)
kbn然后发现自己熟悉代码 双击崩溃位置,发现跳不过去 打开call stack ![](https://pic4.zhimg.com/80/v2-44c85e54b21d13d03627feccf3344a57_720w.webp)
打开call stack双击崩溃的位置 ![](https://pic3.zhimg.com/80/v2-4d34c9312cd9948c22a1f870d7548f0e_720w.webp)
双击崩溃的位置成功跳转代码 打开local ![](https://pic3.zhimg.com/80/v2-75ba12f741ae17c55505789d7fd69886_720w.webp)
打开local查看崩溃前的数据 ![](https://pic3.zhimg.com/80/v2-513767ac13555b8f90bbcee2c45b2016_720w.webp)
查看崩溃前的数据这里就可以找到错误的位置以及出问题的原因了。 2.调试程序,由于某些情况下,pdb与现在版本不一致(vs中修改了些的代码,或者vs抽风)vs无法附加进程,但是bug又是偶现的,好不容易出现一次又不能破坏现场。就可以直接使用windbg直接附加到进程进行调试程序。 ![](https://pic3.zhimg.com/80/v2-3ba57bfc770de6d72bf8224bba1d7536_720w.webp) ![](https://pic3.zhimg.com/80/v2-868d22e388ab4ad2e8b7a93e9b5532b6_720w.webp)
附加到进程此时程序会暂停 ![](https://pic4.zhimg.com/80/v2-a1661102efab2aaa9864235b38f26d1b_720w.webp) 打开cpp文件 ![](https://pic2.zhimg.com/80/v2-c9a9a38c99781781661ad74810372e45_720w.webp) 点击上面的小图标,可以打开调用堆栈等窗口。 ![](https://pic2.zhimg.com/80/v2-df78bc85f385cfcd02ddc18ff97d8cdd_720w.webp) 选中你需要调试的代码F9添加断点,跟vs一致。 ![](https://pic3.zhimg.com/80/v2-9d7c1d56a90ed4288dda778b7f4dac3e_720w.webp)
添加断点F5或者输入g 继续运行 ![](https://pic1.zhimg.com/80/v2-05e33636cdeff1ef3c2783793fb2fe7c_720w.webp)
断点停止成功可以看到当前运行的数据都可以看到了。
|