windbg使用超详细教程(我是新手,大佬轻虐)
版本0:2018.4.20
以前一直都是使用的vs和和日志文件调试,近来接触到windbg(额外提一句,好多公司要求上面写的windgb~~)
下载,下载官方版本
下载win10版本 不知道为啥是从sdk安装进去看看再说吧
直接就是下载了 还挺省事
安装,打开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 感谢 尚逸的提醒) 查看数据
发现什么都没有
输入~*kbn 查看所有的线程
然后向上查找KERNELBASE!UnhandledExceptionFilter+0x25a 这个一个 未处理的异常
复制第三个参数00b8d9d0
输入 dd 00b8d9d0
然后输入 .exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数)
然后kbn
然后发现自己熟悉代码
双击崩溃位置,发现跳不过去
打开call stack
双击崩溃的位置
成功跳转代码
打开local
查看崩溃前的数据
这里就可以找到错误的位置以及出问题的原因了。
2.调试程序,由于某些情况下,pdb与现在版本不一致(vs中修改了些的代码,或者vs抽风)vs无法附加进程,但是bug又是偶现的,好不容易出现一次又不能破坏现场。就可以直接使用windbg直接附加到进程进行调试程序。
此时程序会暂停
打开cpp文件
点击上面的小图标,可以打开调用堆栈等窗口。
选中你需要调试的代码F9添加断点,跟vs一致。
F5或者输入g 继续运行
可以看到当前运行的数据都可以看到了。
好了先这样,继续吃饭了。