『程式設計師調程式碼訪談』是 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 !