程序员调代码访谈』是 Karim Hamidou 发起的一个程序员访谈系列,受访者分享他们遇到的最难/最有意思的Bug,以及如何解决。 本文是这个系列的第一篇,受访者是 Brent Simmons。伯乐在线已获得 Karim 的翻译许可。 你是谁?我是一个软件开发者。我住在西雅图——美国西北部太平洋沿岸。 我和我的同事 Dave Wiskus 和 John Gruber 写了一个 iPhone 上的笔记应用 Vesper。以前,我写过的应用有 NetNewsWire、 MarsEdit 和 Glassboard。 我的博客是 inessential.com,我和朋友Chris Parrish 在 therecord.co 上有一个播客。 你解决了什么有趣的bug?对于某些版本的OS X(可能是OS X10.5)苹果改变了如何将崩溃日志存储在磁盘上。之前是每个应用一个文件,但后来苹果改变成每个崩溃日志一个文件。 当时,我的应用 NetNewsWire 有崩溃日志捕获器来向我推送崩溃日志,所以我可以找出哪里出了问题并解决它。 我更新了崩溃日志捕获代码来处理新的格式,应用进行beta测试,最终代码以它的方式进入了下一个版本。 让我出乎意料的是,当下一版本发放时,一大堆人在他们第一次启动这个应用时遇到了应用崩溃的情况! 我知道这一点是因为他们告诉了我,也因为应用程序向我发送了他们的崩溃日志。 有趣的一点是,应用程序崩溃在崩溃日志捕获器本身。当没有崩溃日志时,我忘了测试崩溃日志捕获器。 因此当没有崩溃日志时,它崩溃了。 只有至少创建一个崩溃日志,应用程序才不会再次崩溃。这个bug是自愈的! 当然,我在下一版本中修复了这个。(这是一个很小的错误,我只修改了一行。)我应该已经赶上了我自己,因为当有东西为零时,进行测试总是好的做法。 但是,这并不奇怪。开发者总有崩溃日志,同时我的beta测试者们也是。(因为他们使用的是应用程序的未发行版本。) 我应该有自动化测试,但我没有。从中我得到了教训。我很幸运,在这一种情况下,崩溃可能永远只能在每台计算机上发生一次。 作者按:第一个我要感谢的是Brent ! |