首页新闻找找看学习计划

求助程序老鸟定位服务器崩溃的方式方法

0
悬赏园豆:10 [已解决问题] 解决于 2019-02-20 18:08

C++服务不定期崩溃
现象:服务器程序不定期崩溃,每次崩溃点都不同。

exe不定期崩溃,初步判断是由于数组越界导致堆栈错误,但是又找不到越界位置。
每次产生dump崩溃点都不一致,还有什么方法来定位吗?

擦亮双眼的主页 擦亮双眼 | 初学一级 | 园豆:186
提问于:2019-02-14 11:40
< >
分享
最佳答案
0

越界是比较难找,只好基于猜测、慢慢收缩查找范围。另外,gdb里面有个命令叫watch,或许你用的上。

收获园豆:5
窗户 | 小虾三级 |园豆:827 | 2019-02-16 21:05

谢谢,我这边是Windows平台,最终通过排除法,一点点减功能,定位出了问题模块。

擦亮双眼 | 园豆:186 (初学一级) | 2019-02-20 18:04
其他回答(2)
0

加一些日志

收获园豆:5
ycyzharry | 园豆:19229 (专家六级) | 2019-02-14 13:26

日志也加了很多,目前还看不出来越界的位置。
通过dump是否可以倒推到越界的时候呢?现在的dump每次表现都不一样

支持(0) 反对(0) 擦亮双眼 | 园豆:186 (初学一级) | 2019-02-14 14:40
0

最终通过排除法,一点点减功能,定位出了问题模块。
给你们也讲讲排除过程,使用fulldump,在崩溃点附近看各种数据的内存,猜测可能出问题模块。
通过各种尝试,来慢慢排除掉无关模块。
每次崩溃地方都不一样的话,大概率就是踩内存了,这种问题的定位确实没有什么好办法。
1.拼命打日志
2.一点点排除

擦亮双眼 | 园豆:186 (初学一级) | 2019-02-20 18:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册