當前位置: 華文星空 > 知識

最難偵錯修復的 bug 是怎樣的?

2015-03-25知識

為了紀念1024節,我也寫一個我遇到的bug。

我給大家介紹一個衛星導航方面的bug。這個bug要是在以前基本上是無法解決的。當時我們在靜態條件下,連續測試了半個多月的接收機,接收機工作一直很正常。有一天,我分析原始觀測值的時候,發現B1 15號衛星觀測值的整周相位在有一段時間(不到一個小時)會存在異常。這個異常對於大部份開發者都是很棘手的問題:首先,這個問題出現的機率很小,下次什麽時候會重復誰也說不準;其次,這個問題從現象到定位到具體程式碼困難重重,自己寫的程式碼看起來就像自己的親兒子,怎麽看起來怎麽順眼,不抓著現行,很難找到是哪裏出問題了。

在衛星導航領域一般會記錄衛星跟蹤的原始觀測值,然後轉換成標準的rinex格式進行後處理和分析。我分析觀測值的時候,發現北鬥 15號衛星在一段時間記憶體在有周期性的半周問題。

流動站(我們的接收機)和參考站(標準接收機)共天線情況下站間星間整周差
流動站和參考站共天線情況下B1 15號衛星站間星間整周差存在半周問題
B2也存在相同的問題,B2 15號衛星站間星間整周差局部放大

問題到了這裏好像就無解了,實際上當天晚上我就把這個問題解決了。

我在做這個計畫之前,就有多年從事一線FPGA、ARM和DSP開發的實際工作經驗。我的體會就是,計畫越到後期,時間和