windbg使用超详细教程(我是新手,大佬轻虐)

版本0:2018.4.20

以前一直都是使用的vs和和日志文件调试,近来接触到windbg(额外提一句,好多公司要求上面写的windgb~~)

下载,下载官方版本

Download Debugging Tools for Windows - WinDbg - Windows drivers​docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

 

 

 

 

 直接就是下载了 还挺省事

 

 安装,打开exe 我选择了下载

 

 next

 

 next

 

 download 然后等待下载完成

 

 打开X64 Debuggers And Tools-x64_en-us.msi 要安装对应系统位数 不然打不开

 

 安装完成后没有反应。。。。。也是醉了。还以为我弄错了呢 开始菜单有 如果找不到可以从右侧路径找(我的高级打码 嘿嘿)

 

 

吃饭去 回来继续

版本1:2019年7月29日

饭吃完了,那下面咱们继续。

版本2:2019年8月25日

由于上次吃完饭,没收拾碗筷,所以又忙活了几天。

首先写一些用过的用法。(本身想着弄个超详细的基本教程的,现在发现貌似没有时间弄)

配置

 

 

设置自己的pdb文件路径以及代码路径(后续默认已经设置过自己的路径了)

具体设置没有放图,是因为每个人的路径不一直,放了怕误导。

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 继续运行

 

 

可以看到当前运行的数据都可以看到了。

好了先这样,继续吃饭了。

 

 

posted on 2022-06-20 10:36  癫狂编程  阅读(17108)  评论(0编辑  收藏  举报

导航

好的代码像粥一样,都是用时间熬出来的