程式除錯原理及步驟

2021-10-07 18:31:38 字數 1617 閱讀 9312

在微控制器或者程式開發過程中,有乙個很重要的步驟就是「除錯」又叫「debug」。通過除錯能夠迅速找到程式出現的問題,用好除錯能讓我們事半功倍。

「除錯」的過程就是在程式段某個可能出現問題的地方打乙個「斷點」,程式執行到斷點之後就會停止執行,之所以叫「斷電」,乙個可以從它的工作原理上理解,因為打斷點實現程式停止的工作機理就叫「中斷」,和平時用的外部中斷,定時中斷都是一樣的。另乙個還可以直觀的理解,因為程式執行到這個點就「斷了」,所以叫斷點。

那為什麼要打斷點,或者說打斷點的意義在**?首先,編寫乙個大一點的程式基本不可能毫無失誤全部做對。不管是什麼原因,總之就是程式執行結果和應該得到的結果不一樣,但我們有無法很快的確定錯誤的地方和原因的時候,打斷點的意義就凸顯出來了/。整個程式我們可以把他分成幾個小部分,按照如果每個小部分執行正確,那整個程式一定也執行正常的邏輯來講,打斷點就是讓程式乙個小部分乙個小部分執行,這個過程中找到出現錯誤的那小部分程式段並將其改正。

如何確定倆個斷點之間程式是否執行正常呢?還要用到除錯過程中乙個常用的功能就是「變數監測」,也就是「watch」。通過watch能夠觀察定義的每個變數的值,通過看這些值是否和預期一樣來確定bug存在的地方。

下面就以vc6.0為例講解一下具體除錯的過程。程式:輸入三個數並排列順序。

#include

intmain()

if(a>c)

/*如果a大於c,借助中間變景t實現a與c值的互換*/

if(b>c)

/*如果b大於c,借助中間變數t實現b與c值的互換*/

printf

("the order of the number is:\n");

printf

("%d,%d,%d"

,a,b,c)

;/*輸出函式順序輸出a、b、c的值*/

return0;

}

1.首先將斷點打在第乙個if語句之前,啟動debug,程式執行至斷點後會停止,同時監測abc變數的值。從圖上可以看出,在斷點之前程式只給a,b,c完成了賦值,從watch視窗可以看到三個變數的具體值與程式賦的值一樣,程式正常。

2.接著將斷點打在第二個if之前。執行程式並監測三個變數。第乙個斷點和第二個斷點之間的**意思為如果a>b,就交換二者的值,很明顯此處a3.斷點打在下乙個if語句之前,執行程式。可以看出,程式執行至第三個斷點後,有三個變數的值發生了變化且標紅了,因為這一段**的意思為如果a>c,就交換a,c的值,此處明顯a>c,結果與我們預期一樣,二者完成了交換。

以上就是斷點除錯的基本步驟,不管什麼程式,步驟都大同小異,氣基本原理是不會改變的,此處附上除錯程式常用的選項及意義。

從左往右依次為:

(1) show next segment (單步執行)。

(2) step into (進入)。

(3) step over(跳過.;

(4) step out (跳出)。

(5) run to cursor(執行至斷點)。

(7) watch(檢視) 。

CRC校驗原理及步驟

什麼是crc校驗?crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。crc校驗原理 ...

CRC校驗原理及步驟

什麼是crc校驗?crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。crc校驗原理 ...

CRC校驗原理及步驟

什麼是crc校驗?crc即迴圈冗餘校驗碼 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。crc校驗原理 ...