GDB除錯程式的使用
阿新 • • 發佈:2019-01-26
GDB概述:
GDB是GNU開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像VC、BCB等IDE的除錯,但如果你是在UNIX平臺下做軟體,你會發現GDB這個除錯工具有比VC、BCB的圖形化偵錯程式更強大的功能。
一般來說GDB主要有三大功能: 1)啟動被除錯函式
2)讓被除錯的程式在指定位置停住
3) 當程式停住時,檢查它的狀態值
GDB的使用:
舉下面的程式為例:
寫完程式之後,輸入“ gcc -g gdb.c ” 和 “ gcc a.out ” 啟動GDB對程式的除錯。
GDB的指令:
執行指令:run(簡寫“r”);
設定中斷指令:break 行數(簡寫“b”):;
檢視程式碼指令:list
在GDB中使用檢視原始碼相關的命令時,有一個當前檔案的概念,當命令的位置引數沒有限定一個檔案的時候(不論是明確限定還是隱含限定),將使用當前檔案。當前檔案預設是main函式所在檔案,如果程式當前正處於斷點位置,則斷點所在檔案即為當前檔案。
如下圖:
會發現函式不是從頭開始顯示,這是因為當前行不是從頭開始的程式只能;且每次顯示10行左右,這是可以改變引數值的。
引申的指令:
list - :顯示當前行前面程式。出現
list +: 往後顯示原始碼。
set listsize <count> 設定一次顯示原始碼的行數
list , <last>顯示從當前行到last行之間的原始碼
檢視狀態值指令:print 變數名(簡寫 p)
檢視斷點資訊指令:info break
單步執行指令:next(不會進入子函式)
step(可進入子函式)
繼續執行指令:continue(簡寫“c”,在斷點處繼續執行,知道遇到下一個斷點或者程式結束)
finish(繼續執行,結束此函式)
退出指令:quit
運用GDB除錯段錯誤
如下段程式:
#include<stdio.h>
int main()
{
*pr = "HELLO WORLD";
pr ++;
*pr = 'L';
printf("pr = %d\n",pr);
return 0;
}
執行程式之後發現出現段錯誤了,執行GDB指令在哪裡停住,哪裡就是出現段錯誤的地方,便於我們修改。