首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何根据崩溃信息,定位源码中的异常

2013-04-02 
怎么根据崩溃信息,定位源码中的错误?怎么根据崩溃信息,定位源码中的错误?程序在自己的机器上运行没有问题,

怎么根据崩溃信息,定位源码中的错误?
怎么根据崩溃信息,定位源码中的错误?

程序在自己的机器上运行没有问题,但是在别人的机器上运行的时候崩溃了。不能把源码传给别人,也不能给别人机器装VS调试,只有崩溃是的错误信息。
win7下的错误信息:故障模块名称:terminate.exe
  故障模块版本:0.0.0.0
  故障模块时间戳:512cc003
  异常代码:c0000094
  异常偏移:000017c4
  OS 版本:6.1.7601.2.1.0.256.1
  区域设置 ID:2052
  其他信息 1:0a9e
  其他信息 2:0a9e372d3b4ad19135b953a78882e789
  其他信息 3:0a9e
  其他信息 4:0a9e372d3b4ad19135b953a78882e789
xp上的则是0x000xxxx处的内存错误

像这种情况,怎么根据这些错误信息定位源码中是哪里的问题呢?
[解决办法]
异常偏移: 000017c4
已经很清楚了。
在你本机重新编译生成.map文件,参考其内容即可定位000017c4位于源代码对应哪一行了。
或者用w32dsm软件反汇编exe,看000017c4处对应的汇编指令对应源代码哪一行
[解决办法]
用map文件,根据崩溃的地址码,在map文件中通过偏移量就可以找到所在的代码行了。
[解决办法]
别听上面的老师乱说- - 
笑死了!

给自己的源码添加异常处理类,异常时生成dump文件,
然后调用windbg定位(包含pdb文件),注意有可能出现异常的库也要带异常类,

可以定义到某某行出现异常的,但是版本要一致
[解决办法]

引用:
win7下的错误报告和xp不太一样。
参考这个:http://www.nirsoft.net/utils/app_crash_view.html

Win7的话,请楼主重点关注此帖

热点排行