debugging 是一個在複雜的環境中找線索的過程,起頭往往可以是(部份舉例)
- 能夠協助你找到問題的工具是什麼?
- warnings 訊息等等是什麼?
- 好像跟你的問題有關的、但你又讀不懂的程式碼段
- comment 有些關鍵字例如 "should" "think" "must" "FIXME" "TODO" 等等的程式碼附近。
關掉或是移除這些嫌疑犯(例如會產生 warning 的程式碼片段)來找出錯誤;注意因為可能性太多了,所以務必要在除錯之前,把要除錯系統先「穩定」下來;除非你真的很確定有幫助,不然不要貿然升級或是改動程式碼等等。
除錯完成後,記得
- 在程式裡面尋找類似的錯誤
- 加入可以在未來協助找出類似錯誤的例外處理 [1]
- undo 任何暫時性的修改(可以考慮搭配 version control)
[1] 這點對我而言有被刺激到,例如我後來就在 SOLVCON 裡面加入了類似的檢查,來找出未來 boundary condition 是一個 generic layer 而不是具體的 boundary condition 時,拋出訊息。https://github.com/solvcon/solvcon/pull/180/commits/d946c3d1b6bb23d9011f0f774cf9c2c917848579
沒有留言:
張貼留言