打印

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

[复制链接]
楼主: keer_zu
手机看帖
扫描二维码
随时随地手机跟帖
21
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 这个函 ...

凡是被执行的地方都有可能出错,只看当前栈,发现问题的可能很小。

使用特权

评论回复
22
小鱼儿野| | 2015-3-12 09:32 | 只看该作者
不明觉厉,too

使用特权

评论回复
23
lvyunhua| | 2015-3-12 10:04 | 只看该作者
支持下!

使用特权

评论回复
24
keer_zu|  楼主 | 2015-3-12 11:12 | 只看该作者
icecut 发表于 2015-3-12 00:07
我最烦这些 imp 封装.破坏了 c++代码的优秀性.

这主要是为了模块化,做个外壳,细节对其它模块隐藏,有得必有失吧。鱼与熊掌。哈哈

使用特权

评论回复
25
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 这个函 ...

即使是单线程,通信的交互也是存在的,单步不行。加些打印,尽量缩小范围,最终确定问题点。

使用特权

评论回复
26
keer_zu|  楼主 | 2015-3-12 11:15 | 只看该作者
linqing171 发表于 2015-3-11 22:55
没有心情看你的汇编,太长了.
看到 786966657270222c  = ASCII(xiferp",) 全部都是ASCII, 就感觉可能是strin ...

你这把语言都换了,C++做服务器程序还是当下主流。任何语言都有优劣吧。语言不能换,哈哈

使用特权

评论回复
27
icecut| | 2015-3-12 11:21 | 只看该作者
原来你还没解决啊?你知道有一种断点叫做内存修改断点不....一招制敌

使用特权

评论回复
28
keer_zu|  楼主 | 2015-3-12 11:32 | 只看该作者
icecut 发表于 2015-3-12 11:21
原来你还没解决啊?你知道有一种断点叫做内存修改断点不....一招制敌

当然是解决了啊。:lol 不是说低级错误嘛

使用特权

评论回复
29
keer_zu|  楼主 | 2015-3-12 11:32 | 只看该作者
icecut 发表于 2015-3-12 11:21
原来你还没解决啊?你知道有一种断点叫做内存修改断点不....一招制敌

内存修改断点?怎么用,跟你学姿势:lol

使用特权

评论回复
30
icecut| | 2015-3-12 13:26 | 只看该作者
gdb 内存断点百度之

使用特权

评论回复
31
keer_zu|  楼主 | 2015-3-12 14:00 | 只看该作者
本帖最后由 keer_zu 于 2015-3-12 14:01 编辑

GDB内存断点(Memory break)的使用举例     @icecut  

使用特权

评论回复
32
panzhongmou| | 2015-3-12 14:00 | 只看该作者
默默支持 虽然一头雾水

使用特权

评论回复
33
keer_zu|  楼主 | 2015-3-12 20:12 | 只看该作者
[em:9:]

使用特权

评论回复
34
linqing171| | 2015-3-12 22:18 | 只看该作者
可惜keil的内存断点怎么用怎么崩溃 .  哎, 还是x86的大软件调试功能强大啊.

使用特权

评论回复
35
keer_zu|  楼主 | 2015-3-13 09:14 | 只看该作者
linqing171 发表于 2015-3-12 22:18
可惜keil的内存断点怎么用怎么崩溃 .  哎, 还是x86的大软件调试功能强大啊.

...

应该是GDB做得好,keil没做好,和平台以及软件大小没关系

使用特权

评论回复
36
keer_zu|  楼主 | 2015-3-13 09:16 | 只看该作者
大家猜猜出这样的问题可能是什么造成的?

使用特权

评论回复
37
m564522634| | 2015-3-13 22:35 | 只看该作者
另外一个变量把你这个变量修改了,分配到同一地址了吧

使用特权

评论回复
38
keer_zu|  楼主 | 2015-3-13 22:44 | 只看该作者
m564522634 发表于 2015-3-13 22:35
另外一个变量把你这个变量修改了,分配到同一地址了吧

改变这个指针变量为一个非正常值的,一定是个误操作。

使用特权

评论回复
39
keer_zu|  楼主 | 2015-3-13 22:44 | 只看该作者
m564522634 发表于 2015-3-13 22:35
另外一个变量把你这个变量修改了,分配到同一地址了吧

改变这个指针变量为一个非正常值的,一定是个误操作。

使用特权

评论回复
40
keer_zu|  楼主 | 2015-3-20 10:04 | 只看该作者
@linqing171 @icecut    最后发现原因是:一个日志函数里面,记录进日志的内容过长,超出里面一个数组的范围,导致数据覆盖到base数据结构。当然,函数里面的数组(局部数组)应该是占用的栈空间,怎么会把那个全局结构干掉?这个问题还得好好研究一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则