今天解决的一个bug,分享过程(低级错误铸就不小的麻烦。)

[复制链接]
14442|63
 楼主| keer_zu 发表于 2015-3-12 09:11 | 显示全部楼层
linqing171 发表于 2015-3-11 23:03
怀疑在 cdy::ConnectorImp::Connect (this=0x889360, timeout=3000) at ../src/connbaseimp.cpp:274 这个函 ...

凡是被执行的地方都有可能出错,只看当前栈,发现问题的可能很小。
小鱼儿野 发表于 2015-3-12 09:32 | 显示全部楼层
不明觉厉,too
lvyunhua 发表于 2015-3-12 10:04 | 显示全部楼层
支持下!
 楼主| keer_zu 发表于 2015-3-12 11:12 | 显示全部楼层
icecut 发表于 2015-3-12 00:07
我最烦这些 imp 封装.破坏了 c++代码的优秀性.

这主要是为了模块化,做个外壳,细节对其它模块隐藏,有得必有失吧。鱼与熊掌。哈哈
 楼主| keer_zu 发表于 2015-3-12 11:13 | 显示全部楼层
linqing171 发表于 2015-3-11 23:03
怀疑在 cdy::ConnectorImp::Connect (this=0x889360, timeout=3000) at ../src/connbaseimp.cpp:274 这个函 ...

即使是单线程,通信的交互也是存在的,单步不行。加些打印,尽量缩小范围,最终确定问题点。
 楼主| keer_zu 发表于 2015-3-12 11:15 | 显示全部楼层
linqing171 发表于 2015-3-11 22:55
没有心情看你的汇编,太长了.
看到 786966657270222c  = ASCII(xiferp",) 全部都是ASCII, 就感觉可能是strin ...

你这把语言都换了,C++做服务器程序还是当下主流。任何语言都有优劣吧。语言不能换,哈哈
icecut 发表于 2015-3-12 11:21 | 显示全部楼层
原来你还没解决啊?你知道有一种断点叫做内存修改断点不....一招制敌
 楼主| keer_zu 发表于 2015-3-12 11:32 | 显示全部楼层
icecut 发表于 2015-3-12 11:21
原来你还没解决啊?你知道有一种断点叫做内存修改断点不....一招制敌

当然是解决了啊。:lol 不是说低级错误嘛
 楼主| keer_zu 发表于 2015-3-12 11:32 | 显示全部楼层
icecut 发表于 2015-3-12 11:21
原来你还没解决啊?你知道有一种断点叫做内存修改断点不....一招制敌

内存修改断点?怎么用,跟你学姿势:lol
icecut 发表于 2015-3-12 13:26 | 显示全部楼层
gdb 内存断点百度之
 楼主| keer_zu 发表于 2015-3-12 14:00 | 显示全部楼层
本帖最后由 keer_zu 于 2015-3-12 14:01 编辑

GDB内存断点(Memory break)的使用举例     @icecut  
panzhongmou 发表于 2015-3-12 14:00 | 显示全部楼层
默默支持 虽然一头雾水
 楼主| keer_zu 发表于 2015-3-12 20:12 | 显示全部楼层
linqing171 发表于 2015-3-12 22:18 | 显示全部楼层
可惜keil的内存断点怎么用怎么崩溃 .  哎, 还是x86的大软件调试功能强大啊.

 楼主| keer_zu 发表于 2015-3-13 09:14 | 显示全部楼层
linqing171 发表于 2015-3-12 22:18
可惜keil的内存断点怎么用怎么崩溃 .  哎, 还是x86的大软件调试功能强大啊.

...

应该是GDB做得好,keil没做好,和平台以及软件大小没关系
 楼主| keer_zu 发表于 2015-3-13 09:16 | 显示全部楼层
大家猜猜出这样的问题可能是什么造成的?
m564522634 发表于 2015-3-13 22:35 | 显示全部楼层
另外一个变量把你这个变量修改了,分配到同一地址了吧
 楼主| keer_zu 发表于 2015-3-13 22:44 来自手机 | 显示全部楼层
m564522634 发表于 2015-3-13 22:35
另外一个变量把你这个变量修改了,分配到同一地址了吧

改变这个指针变量为一个非正常值的,一定是个误操作。
 楼主| keer_zu 发表于 2015-3-13 22:44 来自手机 | 显示全部楼层
m564522634 发表于 2015-3-13 22:35
另外一个变量把你这个变量修改了,分配到同一地址了吧

改变这个指针变量为一个非正常值的,一定是个误操作。
 楼主| keer_zu 发表于 2015-3-20 10:04 | 显示全部楼层
@linqing171 @icecut    最后发现原因是:一个日志函数里面,记录进日志的内容过长,超出里面一个数组的范围,导致数据覆盖到base数据结构。当然,函数里面的数组(局部数组)应该是占用的栈空间,怎么会把那个全局结构干掉?这个问题还得好好研究一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部