preload
二月 06

上禮拜, 我的virtual platform 程式的基本功能已經能在公司的linux PC上正常的run了. 由於實驗用的PC比較慢, 所以就把程式丟到快一點的工作站上去跑, 結果compile玩後, 一執行, 當場就掛了. 但拿回自己實驗的PC又跑的好好的. 而且家裏的PC也run 的好好的, 一直覺得很納悶, 哪裡出問題了. 比較兩台PC環境, 一台是Fedora Core 5, P4 CPU, 另一台是CentOS 4 , Duo Core的 CPU. 本以為是CentOS 太舊了 , 想說應該不是我程式的問題(心理還是毛毛的)……..後來在我的ASUS NB(Fedora Core 6, Duo Core CPU) 上跑, 一樣掛掉. 就決定一定要把問題找出來. 奮戰超過12小時後, 終於找到問題, 原來是我的程式有race condition的問題, 在快一點的CPU上跑, 就有可能測出bug.

雖然問題解決了, 但是讓我體會到一件事情, 許多人(包過我自己)在程式寫到一個段落後, 在自己的環境下測試OK, 或者是經過許多環境測試都OK. 就信誓旦旦的說, 程式寫完了, 測過了, 沒問題, 但是一旦在某特定環境下出錯, 就直覺是環境的問題, 而不相信自己的程式有錯….
但是事實卻是自己的程式有bug. 通常這類的bug不容易測出來, 也不容易找到癥結點. 但是一但認為自己的程式沒問題, 那就完蛋了, 這個bug可能就用永遠不會被發現了.

所以對自己的程式, 隨時保持懷疑的態度, 有助於提升程式的品質, 即使是大師級的人物, 也可能會犯下小錯而不自知. 唯有不斷的review 自己, 才能把那隻該死的bug抓出來.

Comments are closed.