PC软件崩溃定位方式

您所在的位置:网站首页 windows10查看错误日志 PC软件崩溃定位方式

PC软件崩溃定位方式

2023-09-26 05:24| 来源: 网络整理| 查看: 265

基本步骤:

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

准备windbg环境。

定位代码位置。

查看事件日志错误。

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

如下图所示:

得到以下有用信息:

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

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

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

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

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

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

准备windbg环境。

启动windbg。

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

通过windbg启动该exe。

定位代码位置

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

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

计算错误代码地址

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

模块开始位置:0x7b550000

错误偏移量:0x0000100d

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

查看错误地址代码

查看地址代码命令: ln addr

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

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

则输入命令:ln 7b55100d

如下图所示。

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

34行代码,如下图所示。

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3