关闭

遇到的最难的bug

标签: 查找bug
352人阅读 评论(4) 收藏 举报
分类:

1.bug背景

    产品要兼容win7-64系统,我们产品是c/s/c架构,即客户端/服务器/控制台。

    客户端程序出现bug,程序一运行就崩溃。(尝试抓取崩溃文件,没有获取崩溃信息)


2.查找问题

    程序的逻辑是这样的,它启动之后要与服务器进行通信,但是根据查看端口,程序与服务器端口连接

并不正常。首先确认在双方通信的过程中就存在这个问题,通信库是我们自己编写的,接下来开始调试

查看通信库哪里出现问题。找到之后修改,发现通信还是没有建立。 

    通信基础框架我们采用socket网络编程方式,我们的服务器是32位操作系统,客户端是64位操作系统,

为了确保此种通信框架可用,编写了一个简单的通信程序,在客户端和服务器间进行通信,发现时可以的,

证明了我们的通信方式是可用的。接下来继续查找罪魁祸首。

    通过跟踪查找,打印消息等各种手段查找通信过程,查找select函数使用存在问题,修改还是出现崩溃

问题。这时不能确保是通信出现问题还是具体功能出现问题,现在开始整理代码逻辑,把所有与通信无关

的功能都去掉,一步一步查找问题,首先必须确保通信可以畅通才能谈其他,否则客户端就是费得。

    静下心来一点一点的把不相关的东西都去除掉,最后只剩下通信模块,通过测试可以看到端口可以进行

短暂的连接,然后又断开,说明tcp连接的3次握手已经实现,有可能是在发送的数据包的过程中出现了“恶

瘤”,自认为较直观,清晰的方式是看服务器和客户端在通信时都发送了什么数据包,在哪个数据包死掉的,

然后使用wireshark工具查看双方的通信,根据数据包内容以及相关代码,确认出错地点,发现是一个函数

运行时崩溃了。。。。。。

    接下来修改测试,通信成功,甚是激动。。。


3.总结

    这是解决问题之后整理的逻辑,在过程中因为逻辑不清晰以及对项目的不熟悉,导致走了很多的弯路,也

尝试了很多种办法。

    项目属于中小型项目,代码量多,可能会出现错误的地方也很多。找到一条正确的路,难。

    找到一条路,头留下,其余的都砍掉,如果对整体项目不熟,在砍掉的时候也是一个比较犯愁的问题:)

然后从头开始找,一步一步的,切忌烦躁。

    

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8665次
    • 积分:288
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    最新评论