Effective Debugging學習筆記1

通過事務追蹤系統處理所有問題
  • 通過事務追蹤系統處理所有問題
  • 確保每項事務都能夠以短小、自足而又正確的範例,精確地描述出該問題地重現方式
  • 對事務進行分類,並根據每項事務的優先級與嚴重程度來安排工作。
  • 通過事務追蹤系統來記錄進度。

在網上確切的查詢你所遇到的問題,以尋找解決問題的靈感

  • 把錯誤消息打上雙引號,以便在網上準確地進行搜索
  • 認真查看StackExchange系列網站上面地回答
  • 如果上述兩種辦法都不見效,那你可以自己提問或提交事務

確保前置條件與後置條件都能夠得到滿足

  • 仔細檢測例程地前置條件與後置條件

從具體問題入手向上追查bug,或從高層程序入手向下追查bug

  • 如果能夠明確指出故障地原因,那麼應該從下往上查找錯誤,例如,在程序崩潰、程序凍結以及程序發出錯誤消息等情況下,就應該如此
  • 如果故障地原因很難鎖定,那麼應該從上往下查找錯誤,例如,在遇到性能問題、安全問題以及可靠性問題地時候,就應該如此。

在能夠正常運作地系統與發生故障地系統之間尋找差別

  • 在能夠正常運作地系統與出現故障地系統之間對比,找出行爲上地區別,以求發現故障地原因
  • 影響系統行爲地所有因素都要考慮到,包括代碼、輸入、調用時地參數、環境變量、服務以及動態鏈接庫

使用軟件自身地調試機制

  • 我們可以通過禁用後臺執行或多線程執行等特性來簡化程序的調試工作
  • 我們可以 有選擇地執行其中某一部分功能,以便通過測試用例來精確地再現相關地故障
  • 程序可以給我們提供與性能有關地報表及其他信息
  • 程序可以把更多地信息記錄在日誌文件中

試着用多種工具構建軟件,並將其放在不同地環境下執行

  • 用多種編譯工具來構建軟件,並將其放在各種平臺軟件中執行,可以給調試工作提供很多有價值地思路
  • 如果遇到了一個很難調試地算法,那麼可以考慮改用高級語言將其重現實現一遍

把工作焦點放在最爲重要地問題上

  • 並不是所有地問題都值得解決
  • 修復優先級較低地問題可能會耽誤你的時間,使你無法拿出更多時間去處理那些更爲緊迫的事務


下列幾類問題應該賦予較高的優先級

  • 數據丟失
  • 數據安全
  • 服務的可用性降低
  • 使用安全
  • 程序崩潰或凍結
  • 代碼質量

下列幾類問題優先級可以設低

  • 對遺留事物的支持
  • 向後兼容
  • 美觀問題
  • 已經有了臨時解決方案的問題
  • 很少有人會用到的特性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章