怎樣調試C++代碼?

Tags: 代碼, 程序,

學會代碼調試是每個程序員必須掌握的一項技能。通過調試,我們可以發現代碼中隱藏的問題或者缺陷,從而使寫出來的程序更加強壯和穩定。

那麼,怎樣調試C++代碼呢?下面,就以VS為例,來給大家演示調試C++代碼的方法。

怎樣調試C++代碼

工具/原料

VS

一、打印當前變量值

在程序運行過程中,如果能知道當前某個表達式或變量的值,就能更好地判斷程序是否正常執行或者判斷問題的所在。那麼,這該怎麼做呢?

比如,有如圖所示的一段代碼,當程序運行到某個斷點時,我想知道其中某個變量的值是多少。

怎樣調試C++代碼

一個比較通用的方法是首先在底部的調試窗口中切換到“監視”選項卡。

怎樣調試C++代碼

然後在名稱一欄點擊一下鼠標,輸入需要顯示的表達式或變量名,回車,即可顯示其值。

怎樣調試C++代碼

當然,查看的表達式或變量不限於一個,你可以同時查看多個,並且還可以在查看值的同時看到它們的類型。

怎樣調試C++代碼

二、添加斷言 _ASSERT

在某些情況下,我們可能希望在表達式或變量變成某個特定值時終止程序執行。比如說,當某個變量變成 false 時終止程序,這就可以使用_ASSERT宏。

_ASSERT宏的用法如下:

它的唯一一個參數是一個布爾類型的表達式,當表達式的值為假時,程序終止執行。

怎樣調試C++代碼

例如,在我們下面的示例中,我們希望當 Hashtable[Pos].bEmpty 為假時終止程序的執行,則可添加一句代碼:

_ASSERT(Hashtable[Pos].bEmpty);

怎樣調試C++代碼

這樣,當程序運行時出現 Hashtable[Pos].bEmpty 為假的情況,就會彈出提示框終止運行。

怎樣調試C++代碼

三、使用 GetLastError函數得到錯誤信息

在進行代碼調試時,GetLastError是一個非常好用的函數,尤其是當怎麼也找不出錯誤時,使用此函數常常“柳暗花明又一村”。

該函數無需提供參數,不過,它的返回值能夠給出一個錯誤代碼。通過查詢這個錯誤代碼,我們常常能夠找出代碼出問題的原因。

怎樣調試C++代碼

例如,在一個對話框程序中,編譯通過,但怎麼也不彈出對話框來,令人百思不得其解。為了查找原因,我們可以在DialogBox函數後添加一句 GetLastError ,並在該處設一個斷點,查看一下GetLastError的返回值,以確定究竟是哪兒出了問題。

怎樣調試C++代碼

我們根據返回的錯誤代碼,對比windows錯誤代碼表,很快就找到錯誤原因。原來,是對話框的樣式設成子窗口樣式了。

怎樣調試C++代碼

怎樣調試C++代碼

注意事項

熟練掌握各種調試代碼的方法,是成為一個優秀程序員的前提條件。

相關問題答案