Linux系統下除錯 C語言程式(使用gdb)
阿新 • • 發佈:2019-02-05
問題描述: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 + 變數名:檢視某一變數的值;