1. 程式人生 > >程式除錯的一般思路

程式除錯的一般思路

每個程式設計師的很多時間都在和bug打交道,而debug的過程總不那麼令人高興。本人在除錯過程中總結了幾點除錯程式的一般方法,寫出來和大家分享,能力有限,歡迎各位大神批評指正!

1.單步除錯

從問題程式的起點開始,單步執行程式觀察變數的變化過程,是最基本的程式除錯方法。這種方法適合錯誤定位範圍較小的程式,並且要求我們知道正確的變數值應該怎樣變化,通過對比當前值和理論值來發現錯誤的程式碼點。

2.斷點即條件斷點

在程式中設定斷點,觀察斷點處的變數值也是一種常用的除錯方法。斷點用於快速排除正確的程式,縮小錯誤程式碼範圍。比如在迭代類程式中,有時出錯點在多次迴圈之中的某一步,我們可以通過條件斷點來跳過前面的n次正常迴圈。我們一般先用斷點縮小錯誤範圍,再用第一種方法逐步檢查程式碼。二者也可以交叉使用。

3.生成日誌檔案

在比較大的程式中,為了以後的維護方便,一般會對重要的變數生成日誌檔案,我們也可以針對我們的除錯生成日誌檔案。通過檢視日誌檔案來確定出錯點,這個方法適合除錯變數多,除錯範圍長的程式。缺點是代價比較大,要編寫日誌生成程式碼。

3.邊界條件的檢查

很多邊界條件是程式的死穴,陣列讀取越界、下標範圍的錯位、迴圈的邊界條件有誤、特殊的輸入值沒有特殊處理等等問題都是邊界問題。我們在程式設計時也要注意對邊界條件的考慮,因為這往往是程式設計師最容易忽略的地方。

4.縮小規模檢查演算法

實際編碼過程中,我們的演算法很多時候是不成熟的,沒有經過仔細的數學推導。所以除錯程式有一定的試探性,這個時候我們為了驗證思路的正確性,要舉一個小的例子來驗證程式的演算法是否正確。

除錯能力的養成不是一朝一夕的,只有平時多動手,多思考,在實踐中不斷摸索,我們的除錯能力才會有所長進。最後再說一點心態問題,和大家共勉:無論是code還是debug,都是一個勞神的過程,長期高負荷工作會耗費我們的精力而影響我們的心情,所以要儘量保證健康生活習慣,充足的精力是我們構思編碼、除錯程式的基礎。