在你写过的所有程序中,你曾经遇到过的最难调试的场景是?

2014-09-03 00:32:16 +08:00
 Livid
6802 次点击
所在节点    程序员
57 条回复
wyj2046
2014-09-03 17:49:41 +08:00
@acros 太耸人听闻了!
cxxrocks
2014-09-03 18:51:25 +08:00
@signifox 我也遇到过,协程或状态机能大大缓解这种情况。
myrual
2014-09-03 19:29:05 +08:00
随便说一个最近写的一篇,非常简单的蓝牙无线通信的软硬结合的时候遇到的各种问题。
http://blog.myrual.me/posts/223499-electronic-design-review

这个项目demo5月份就做好了,到今天才把各种问题解决完毕,只有一次需求变化,几乎把蓝牙芯片的性能用到顶,
这还不包括晶振选错,pcb封装选错造成的各种问题。
sinxccc
2014-09-03 20:11:49 +08:00
1. 没有必现条件,小概率复现的问题
2. 涉及第三方的库,第三方不提供代码
3. 新硬件,调试环境缺失
4. 海量 log
5. 没有 log

1、2、3 都有,然后 4 和 5 里面任选一样的话,这个 bug 的解决就很依赖运气,还有公司有多重视了。

虽然我一直挂在嘴边的话是“每个 bug 都有必然有一个原因”…
fkue0487
2014-09-03 20:12:47 +08:00
客户端一开,服务器CPU100%
cbsw
2014-09-03 20:22:57 +08:00
对于中低端的 coder 来说,用的框架、编译器等非常底层或值得信赖的软件碰到一个还没被人发现的的 bug,好比物理中那些非常基本的原理存在问题时,通常都会怀疑是自己的问题,结果反复检查调试自己的代码直到真正非常确定是基本的东西出了问题,才会由衷地说一句艹,原来是这玩意儿的问题啊

再现率低的 bug 对所有级别的程序员应该都是非常棘手难调的问题
denghongcai
2014-09-03 20:25:12 +08:00
@acros 吓哭了……
denghongcai
2014-09-03 20:26:25 +08:00
@ahtsiu node编译时--without-snapshot --without-ssl
feefk
2014-09-03 22:28:41 +08:00
刚毕业那会儿做嵌入式软件,我做ui,做的过程中发现我做的界面总是会莫名其妙的变成黑白色的。。对于这么严重的bug,老大限期我两天改好,那两天每天都是凌晨两三点回家,每天都是焦头烂额,怎么调试都发现不了问题。。。

当时嵌入式设备上插着一个u盘,第三天查问题的时候,同事把u盘拔了。。拔了之后,奇迹出现了,我的界面再也不会变黑了。。。

后来查找原因,发现是同事写的读取usb数据code会把系统的颜色表内存覆盖掉。。。现在想想都觉得当时那几天简直不能直视。。。
FatGhosta
2014-09-03 22:35:53 +08:00
异步IO
jptiancai
2014-09-03 22:43:16 +08:00
电话调试,由于网络速度超盘,处于干着急的状态!!
winiex
2014-09-03 22:57:12 +08:00
不算是最难调试的一次,算是比较尴尬的一次:刚开始做扩展后端的机器集群来提供基础服务,二十多台机器组合在一起,但是因为对于运维没有深刻的经验所以没有很好地实现 fail over 机制。在一天晚上系统突然出现连接超时的情况,焦急中熬夜各种查询从数据库到 web server 的问题,最后发现是服务器提供商的一台运行数据库 slave 的机器宕机了,ping 不通,最后导致雪崩殃及到表层的 app server 处理速度,最后表现为大面积连接超时。
lazywen
2014-09-03 23:44:49 +08:00
@signifox 头疼,硬着头皮上
reorx
2014-09-04 00:36:03 +08:00
这个问题之前在 quora 上看到过: http://www.quora.com/Software-Engineering/Whats-the-hardest-bug-youve-debugged ,答案 upvote 第一的哥们从业务代码一直向下追踪到了硬件的计时器才定位到 bug,令人佩服。

就自己的经历而言,最难的一次是遇到 nginx 服务器大面积无规律重启的情况,无法人工复现,无法预期观测,只好各种 tcpdump 和 core dump,反复调试 kernel 的各种 TCP 配置,LVS 和 nginx 集群之间来回切换……最后查出来是 net.ipv4.tcp_congestion_control 使用 cubic 算法的 bug,在 SYN flood 的情况下会使 kernel 产生 divide error 导致系统重启,换成 reno 后终于解决了问题。
Livid
2014-09-04 00:37:14 +08:00
@reorx 貌似你是在 CDN 公司工作?
reorx
2014-09-04 00:49:45 +08:00
@Livid 在 Wandoujia,接触过公司的一些 CDN 工作,不过主要还是做运维开发,上面描述的问题也是在 web 服务的 nginx 集群上发生的。Livid 应该还在 chinacache 吧?这才是货真价实的 CDN 公司呢,有机会向你请教 XD。(手抖不小心点到感谢了…)
Cee
2014-09-04 01:15:17 +08:00
寫多人協作遊戲的同步問題。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/131405

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX