windbg调试dump文件
1.调试信息设置
首先得设置pdb位置,源码位置,然后打开dump文件
eg:
符号搜索路径
E:\code\KilaApp\Release;
SRVD:\symbolshttp://msdl.microsoft.com/download/symbols
代码搜索路径
E:\code\KilaApp_online\KilaMain;
E:\code\KilaApp_online\uvo_sdk_hongdouPC
2.自动分析dump文件 查看数据
指令1:
!analyze -v
自动分析dump文件,如果有exception截图记录;如果没有则进行下面操作
指令2:
~*kbn
查看所有线程运行情况 结果出来后从下往上搜索关键字except 找到异常线程分析记录;
指令3:
复制第三个参数00b8d9d0
dd 00b8d9d0
然后输入 .exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数)
.exr 00b8db60(第二个参数)查看上下文 .cxr 00b8dbb0 (第三个参数)
然后kbn
然后发现自己熟悉代码
双击崩溃位置,发现跳不过去
打开call stack
打开call stack
双击崩溃的位置
双击崩溃的位置
成功跳转代码
打开local
打开local
查看崩溃前的数据
查看崩溃前的数据
这里就可以找到错误的位置以及出问题的原因了。
=====================================
其他:
4.显示指定地址对应异常记录的内容
.exr Address #显示指定地址的异常情况
.exr -1 #显示最新的异常
显示与调试器在目标计算机上遇到的异常相关的信息。显示的信息包括异常地址、异常代码、异常标志和异常参数的变量列表。 通常可以通过使用!pcr扩展命令获取地址。
5.显示保存在指定地址的上下文记录
.cxr [Options] [Address]
参数:
Options
可以是以下选项的任意组合:
/f Size—强制上下文大小等于Size的值(字节)。当上下文与实际目标不匹配时(例如,在WOW64调试期间在64位目标上使用x86上下文时),这将非常有用。如果指定的大小无效或不一致,将显示错误“无法将上下文转换为规范格式”。
/w—将当前上下文写入内存,并显示其写入位置的地址。
Address
系统上下文记录的地址。省略地址不会显示任何上下文记录信息,但会重置寄存器上下文。
上下文记录中的信息可用于帮助调试发生未处理异常且无法使用精确堆栈跟踪的问题。.cxr命令显示指定上下文记录的重要寄存器。此命令还指示调试器将指定的上下文记录用作寄存器上下文。执行此命令后,调试器将访问此线程最重要的寄存器和堆栈跟踪。在允许目标再次执行或使用另一个寄存器上下文命令(.thread、.ecxr、.trap或.cxr)之前,此寄存器上下文将一直保持。在用户模式下,.cxr/w命令将上下文写入内存,并显示存储上下文的地址。可以将此地址传递给。
6.显示与当前异常关联的上下文记录
.ecxr
定位当前异常的上下文信息,并显示指定上下文记录的重要寄存器。此命令还指示调试器将与当前异常关联的上下文记录用作寄存器上下文。运行.ecxr之后,调试器可以访问此线程最重要的寄存器和堆栈跟踪。在启用目标执行、更改当前进程或线程或使用另一个寄存器上下文命令(.cxr或.ecxr)之前,此寄存器上下文将一直保持。
7.查看当前线程的运行情况
kbn
参考:
https://zhuanlan.zhihu.com/p/43972006
https://www.cnblogs.com/yilang/p/11531740.html
https://blog.csdn.net/m0_46256056/article/details/118538700