PC软件崩溃定位方式 |
您所在的位置:网站首页 › windows10查看错误日志 › PC软件崩溃定位方式 |
基本步骤: 查看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 |