1. 程式人生 > >Linux系統下除錯 C語言程式(使用gdb)

Linux系統下除錯 C語言程式(使用gdb)

問題描述:Linux 系統下用C語言寫 的指令碼程式,程式執行時出現未知錯誤需要除錯找出問題所在地。(阿里雲Ubuntu系統的伺服器)。

解決方法:使用 gdb工具在終端視窗中除錯 C檔案。

具體方法:

(1)安裝 gdb 

sudo apt-get install gdb

(一般的伺服器是沒有安裝gdb的,所以需要安裝gdb。如果安裝過程中出現源錯誤,直接使用 sudo apt-get update 更新源就可以了)

(2)使用gdb工具除錯 C 檔案(以TCPServer.c檔案為例,編譯檔案時額外加上-g引數)

編譯:

 gcc -g TCPServer.c -o TCPServer

編譯完成後,啟動GDB除錯工具,命名為:gdb + 要除錯程式的程式名

 gdb TCPServer

除錯方法:

1.檢視程式碼 list

//list命令會列出部分的程式碼,可能需要多次list
list
//list a 可以從第a行開始列出程式碼

2.加斷點    b 命令

//b命令有四種用法
b 函式名 在某函式入口處新增斷點;
b 行號 在指定行新增斷點
b 檔名:行號 在指定檔案的指定行新增斷點
b 行號 if 條件 當條件為真時,指定行號處斷點生效,例 b 5 if i=10 ,當i=10時,第5行斷點生效

//刪除現有斷點 clear 命令
用法:
clear           :刪除當前行的斷點。
clear location  :刪除location行號上斷點
clear location location描述具體的斷點。
例如:
clear list.c:list_delet   //刪除檔案:函式的所有斷點
clear 12                  //刪除行號的所有斷點
clear list.c:12           //刪除檔案:行號的所有斷點

3.檢視斷點資訊  info break  命令

4.執行與檢視變數命令

run 命令:執行程式;
next命令:單步執行;
c 命令:連續執行;
print + 變數名:檢視某一變數的值;