我那輛2005年式Honda Accord的左側煞車燈幾天前燒壞了。這不是什麼大不了的問題:很幸運地只要花幾秒鐘就能換好燈泡,不像是頭燈或是現在某些其他車輛的車燈那麼麻煩;就算是這樣,讓我感到困惑的是,兩年前同一個位置的非LED白熾燈也燒壞過,在那之前的幾年也發生過一次,現在又這樣…(身為一個工程師,我總是會保留這類紀錄)。

這樣的「巧合」讓我非常好奇,特別是因為右側的那個煞車燈燈泡從來沒燒壞過。我的除錯經驗告訴我,這就只是一個巧合,就像是丟硬幣會出現正面或反面的機率;當然這件事可以就這樣簡單換個燈泡就讓它過去,但或許就是太方便輕鬆,我忍不住檢查了燈泡插座──看起來很乾淨(沒有鏽蝕或燒熔的痕跡)──以及所有的關聯線路。

因為年份比較久,這輛車並沒有連網,所有的線路都很基本,形成開關直流迴路(switched DC loops),而這確實也能簡化故障分析並減少可能的故障原因。於是我開始思索到底可能是哪裡出問題...如果是為兩側煞車燈供電的開關高側線路有一些過壓(overvoltage)狀況,那麼兩邊的燈泡應該都會發生故障。

考量其低故障率與平均故障間隔時間(MTTF),或許另一側的燈泡很快也會不亮了,但就是沒有足夠的資料可以判斷。又或許左側的燈泡有一些持續發生的微振動(microvibration),這會縮短燈泡的使用壽命…還是有一些我想不到的可能原因?

我的另外一個想法是從其他角度來找原因。或許,第一顆燈泡與後來的那顆燈泡都燒壞,只因為它們是不合標準的產品(因為兩顆燈泡是一起買的、在同一個包裝裡,如下圖);所以燈泡燒壞跟車子與車內的電氣系統無關,而是燈泡零件本身?這應該不是第一次發生的狀況,在一連串的故障排除過程中,我們以為替換零件是好的,實際上並非如此。

EDNT180926_bulb_NT01P1

兩顆來自同一包裝的煞車燈燈泡都發生故障,其中一顆是另外一顆的替換品…所以問題可能是來自燈泡並非車子本身?
(來源:Bill Schweber)

我將這類型情況稱為「工程師的困境」(the engineer’s dilemma);無論是出自於我們的天性或是開發專案的必要項目,工程師們就是會除錯。有時候這種除錯很容易,但往往會讓人感到沮喪,因為充斥著錯誤的路徑、矛盾的證據、不相關的巧合,還有錯誤的希望。

以我的案例來說,因為無法取得汽車製造商的資料庫還有客服相關細節,說不定這個問題實際上在這個年份與型號的車款上並不罕見;同時出廠的車子有成千上萬輛,基於「大數法則」(the law of large numbers),我的經驗只是其中一個樣本。此外,我做出任何更大的結論本質上都是懷疑,因為我的個案並不具代表性,可能只是一個特例。

除錯是工程技能的一種,有部分來自於詳細知識,其他元素還包括經驗、指導、直覺、猜測功力還有運氣,特別是在硬體端。一旦發現微妙的電路問題,可能就會出現最後回想起來其實一切都是如此明顯的「啊哈!」瞬間;但很多時候情況恰好相反,只會鬆口氣、仍忍不住一直想:這是真正的問題根源嗎?或者只是巧合的發現?真正的問題會接著浮現嗎?

雖然有很多針對特定除錯問題以及其解答的案例研究(case studies)與「戰爭故事」(war stories),但基於許多理由,通常關於如何除錯的教材非常少;因為那些一般性說明與準則往往不適用。儘管如此,有一本很棒的書可供參考:《除錯:找出最難以捉摸軟硬體問題的9個必要原則》(Debugging: The 9 Indispensable Rules For Finding Even the Most Elusive Software and Hardware Problems),作者是David J. Agans。這本書不是紙上談兵,而來自實戰經驗的指南。

EDNT180926_bulb_NT01P2

這本教你如何掌握除錯訣竅的好書,無論對新手或老手工程師都會很有幫助
(來源:Amazon)

在此同時,我已經決定不再煩惱我的煞車燈泡問題;因為我的「直覺」告訴我,找出這種問題根源的機率非常小。畢竟這是每隔幾年才會發生一次的情況,我還有很多別的事要做。你也曾經遇過讓你非常困擾的除錯問題,而且因為缺乏資料、故障案例數量不足、MTTF太長或是因為現實世界的一些限制而無法解決嗎?歡迎分享!

編譯:Judith Cheng

(參考原文: The burned-out bulb mystery,by Bill Schweber)