遇到的最难的bug

原创 2013年12月03日 17:45:09

1.bug背景

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

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


2.查找问题

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


3.总结

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

尝试了很多种办法。

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

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

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

    

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

我debug过的最难的bug

原文http://www.quora.com/Programming-Interviews/Whats-the-hardest-bug-youve-debugged/answer/Dave-Bagge...

最难调的Bug-序列化引起的血案

描述由于我利用Gson和ActiveAndroid来保存数据,之前已经能顺利保存各种自定义类型。今天添加一种新的List自定义类型,之后Sqlite疯狂报错,插入出现键重复: 我很清楚的记得以前...

最难小游戏的16进制源码

  • 2014-02-27 23:18
  • 16.39MB
  • 下载

poj 1298 史上最难的问题 -- 凯撒密码

史上最难的问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24958   Accep...

面试时最难的25个问题

  • 2008-10-24 13:22
  • 40KB
  • 下载

世界上最难走的路,永远是歪总的套路!

套路,套路,都是套路。 刚刚歪总在VIP学习群里发了一张耐人寻味的图片 吓死本宝宝了,本宝宝表示有种不详的预感,今天必有大事发生…… 果然!歪总接下来说了一句雷死人不偿命的话...
  • poedu
  • poedu
  • 2016-09-20 15:20
  • 51
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)