hur.cn - 华软网

 热门搜索

求资料,程序崩溃类的。

  作者:未知    来源:网络    更新时间:2010/11/20
  众所周知,能够通进程序的溃散地址查找到代码犯错位置..
网上搜到的 全数是那个说啥除0溃散的,通过map资料查找。

然则呢,那个太简单了。。比如我程序里调用多个DLL,当然我能够用堆栈调用的情况来判断,是哪一个DLL出的问题。

这个时候那个地址就不大管用,然后有人说这个得加上照旧减去偏移地址等等。。

横竖我觉得我缺少系统的了解,希望列位大侠。。提供点资料或经验。。不胜谢谢感动。。
---华软 网友回答---
没人愿意见教吗? 列位大牛呢。
---华软网友回复---
在睡觉呢~~
---华软网友回复---
引用 2 楼 lisunlin0 的回复:
在睡觉呢~~

才16点多呢 该还没起头睡吧。
---华软网友回复---
写LOG 分析对照现实,

先确认是那个DLL挂掉,在写log 确认是那个函数挂掉,在写log确认是那行代码挂掉!

一步一步分析!
---华软网友回复---
引用 4 楼 guanyijun123 的回复:
写LOG 分析对照现实,

先确认是那个DLL挂掉,在写log 确认是那个函数挂掉,在写log确认是那行代码挂掉!

一步一步分析!

欠好办的,代码有好几万行吧。。
谁知道那里挂了。。自己电脑上跑的好好的。。
到各种电脑上运行的时候 就偶尔会出现溃散。。
基本重现不了,而且外部条件限制了,不能打太多日志的。。
---华软网友回复---
顶下~~~让大家看到,好指点下我。。
---华软网友回复---
谷歌之 VC 溃散地址查找犯错代码行
---华软网友回复---
引用 7 楼 visualeleven 的回复:
谷歌之 VC 溃散地址查找犯错代码行


谷歌过了。那个几乎所有文章都是那个啥老罗的。
不过那有个限制就是工程里只有单个资料。
呵呵 要是我的程序里用了DLL里的函数,然则DLL里面溃散了(dll也是我自己的)这类情况怎么办呢?
---华软网友回复---
1、通过日志资料
2、就是上面提到的map的方式,不过这个个人不太喜欢,麻烦
3、编译的时候生成pdb资料,在犯错的时候生成dmp资料。再通过调试dmp资料。能够搜索一下开源工程crashrpt,有较为详细的讲授。现在很多软件都会有这个方式,比如QQ,搜狗输入法等等

---华软网友回复---
引用 9 楼 allen_zhang 的回复:
1、通过日志资料
2、就是上面提到的map的方式,不过这个个人不太喜欢,麻烦
3、编译的时候生成pdb资料,在犯错的时候生成dmp资料。再通过调试dmp资料。能够搜索一下开源工程crashrpt,有较为详细的讲授。现在很多软件都会有这个方式,比如QQ,搜狗输入法等等


ding ding
---华软网友回复---
软件调试 那本书不错,推荐看看
---华软网友回复---
引用 9 楼 allen_zhang 的回复:
1、通过日志资料
2、就是上面提到的map的方式,不过这个个人不太喜欢,麻烦
3、编译的时候生成pdb资料,在犯错的时候生成dmp资料。再通过调试dmp资料。能够搜索一下开源工程crashrpt,有较为详细的讲授。现在很多软件都会有这个方式,比如QQ,搜狗输入法等等


恩,第一个对于我做的事情不大现实。
第2个就是我要问的。我是一个exe,引用好多个DLL的,我能够获得loadlibrary的前往值。和犯错的地址。通过这两个 怎么查,我就不大知道了。
第3个,我去搜下看看。。这个没弄过,呵呵 
谢谢你了。。
晚点揭贴。。
---华软网友回复---
关于第2的那个,仔细看一下老罗的文章就知道怎么查了,不过查起来对照麻烦,特别是加载了很多dll的时候

第3个个人一直都做用的,感觉对照好用。其实也是保存了犯错的相关信息了。
保存下来的dmp资料需要在2005以上版本调试,这个很方便,加上pdb资料就是做调试代码
---华软网友回复---
引用 13 楼 allen_zhang 的回复:
关于第2的那个,仔细看一下老罗的文章就知道怎么查了,不过查起来对照麻烦,特别是加载了很多dll的时候

第3个个人一直都做用的,感觉对照好用。其实也是保存了犯错的相关信息了。
保存下来的dmp资料需要在2005以上版本调试,这个很方便,加上pdb资料就是做调试代码

恩,第二个加载多哥DLL的情况 我都不知道怎么搞

那个第3个 我刚去看了资料。。。有个问题,dmp资料怎么获得,我找不到...
告诉我一下,随便给个文章也行

谢谢你了,麻烦了。
---华软网友回复---
或发我邮箱也能够 phoenix_06@163.com
---华软网友回复---
http://www.cppblog.com/stevenyao/archive/2010/03/17/109945.html
你看这里吧,dmp资料是由crashrpt生成的,中一般都是生成后,压缩成zip资料,再通过邮件发送出去的

http://crashrpt.sourceforge.net/
这里有相关的文档,你自己看一下他的流程就知道了,很简单的
---华软网友回复---
引用 16 楼 allen_zhang 的回复:
http://www.cppblog.com/stevenyao/archive/2010/03/17/109945.html
你看这里吧,dmp资料是由crashrpt生成的,中一般都是生成后,压缩成zip资料,再通过邮件发送出去的

http://crashrpt.sourceforge.net/
这里有相关的文档,你自己看一下他的流程就知道了,很简单的


谢谢,看来照旧这个方法好用。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。