標籤:style blog http color 使用 art 問題 ar
在寫程式的時候,經常會遇到一些問題,比如某些變數計算結果不是我們預期的那樣,這時我們需要對程式進行調試。本文主要介紹調試C/C++在Linux作業系統下主要的調試工具。
在Linux下寫程式,C/C++主要的編譯器有GCC/G++,ICC等,像我等窮碼農,最喜歡GCC了,很大原因是他免費!所以,我們以GCC/G++為例介紹主要的調試工具。
分以下幾個內容介紹:
1、調試之前的工作
2、選擇調試工具
3、調試步驟
點我,請幫我投一票!
調試之前的工作
編譯器在編譯階段需要產生可供調試的代碼,才能被調試器調試。可以如下做:
gcc -g -ggdb ./yourcode.c -o yourapp.exe
這樣編譯代碼可以產生供gdb調試的符號資訊。
選擇調試工具
gdb當時我們要使用的調試工具,不過他是命令列中使用的,多少有點不方便。
CGDB和DDD都是基於GDB開發的,他們只是增加了更加容易互動的介面。其中CGDB也是在命令列中使用的,使用方式與GDB一樣,只是增加了代碼顯示的介面。
DDD也是GNU開發的,他也是基於GDB的,只是使用了可視化介面,比CGDB更加容易操作。
在有些情況下,我的Linux上可能沒有裝X-Sever,這樣就沒有圖形顯示功能,此時我們只能用命令列方式使用調試工具,所以gdb和cgdb應用更廣泛些。一般我會使用CGDB,他的操作跟gdb完全類似,很容易上手。
調試
使用下面的命令啟動程式。
cgdb ./youapp.exe
注意,這裡我們使用的是cgdb,如果你沒有安裝cgdb,首先應該安裝它!ubuntu使用者的安裝方式如下:
sudo apt-get install cgdb
啟動軟體後,常用的幾個命令因該熟練掌握:
1、設定斷點命令,程式在執行時遇到斷點會停下來,執行停止後可以進行變數值的檢查。
break [line_number]
例如:break youcode.cpp:32,這個命令是說在youcode.cpp第32行代碼處設定斷點,程式運行至此時會停下來。
2、顯示變數的值,程式在斷點處停止時可以列印變數的值。
print [var]
例如:print a,這句命令表示列印變數a的值。print也可以縮寫成p。
3、逐步執行,程式在斷點處停止後,使用單步調試命令讓程式一步步往下執行。使用next命令可以完成這個任務,可以縮寫為n。
4、進入內部,在調試過程中,如果想進入某個函數的內部,則可使用step命令。
5、繼續執行到下一個斷點處。使用continue命令可以完成這個任務。
以上命令是gdb調試時常用的命令,也是應該必須掌握的命令。如果你想知道更多如何使用這些命令,使用help command查看相關的協助。