当前位置:   article > 正文

PC软件崩溃定位方式-系统日志_windows程序崩溃日志

windows程序崩溃日志

基本步骤:

  1. 查看WINDOWS事件日志,收集应用错误信息。

  1. 准备windbg环境。

  1. 定位代码位置。

  1. 查看事件日志错误。

打开WINDOWS事件日志--“应用程序”类目,找到对应程序的错误日志。

如下图所示:

得到以下有用信息:

1.异常代码: 0xc0000005。指示什么错误类型,这个代码值一般是非法指针。

2.错误偏移量: 0x0000100d。模块的代码位置。

3.错误应用程序路径: xxxxxxxxxxx\testdbg\output\testdbg.exe 崩溃的进程。

4.错误模块路径: xxxxxxxxxxx\testdbg\output\mydll3.dll。进程所加载DLL。

注意,第4点,一定要是自己编译的模块,并且有编译时候的PDB文件,才有意义。

假如崩溃在系统DLL或第三方DLL,则没有办法指定代码位置。

  1. 准备windbg环境。

  1. 启动windbg。

  1. 配置windbg的PDB文件路径,必须要日志提示的exe和dll对应的pdb文件。

  1. 通过windbg启动该exe。

  1. 定位代码位置

  1. 找到错误模块mydll3.dll的内存地址。

如下图,mydll3.dll模块开始地址是(十六进制):0x7b550000

  1. 计算错误代码地址

经过前面收集资料,得到如下信息:

模块开始位置:0x7b550000

错误偏移量:0x0000100d

错误代码位置=模块开始位置+错误偏移=0x7b550000+0x0000100d=0x7b55100d

  1. 查看错误地址代码

查看地址代码命令: ln addr

其中addr是十六进制地址,带不带前缀0x都可以。。

前面我们已经得到错误代码地址是0x7b55100d,

则输入命令:ln 7b55100d

如下图所示。

可以看到代码位置是mydll3.cpp(34),即在34行代码。

34行代码,如下图所示。

因是通过全局变量定义类ctmp的对象,所以,代码28行构造函数会被调用。从而20、21行代码执行,非法指针操作导致崩溃。

为什么定位到34,而不是21行?因为编译器优化后的结果,34行位置记录了构造函数信息。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/690384
推荐阅读
相关标签
  

闽ICP备14008679号