linux下的GDB除錯 詳細
阿新 • • 發佈:2018-11-13
vim min.c #輸入min.c的內容 gcc min.c -o min -g #必須寫-g gdb -q min #除錯可執行程式 -q是為了阻止顯示版本資訊 l # list 顯示原始碼 一次10行 l # list 顯示原始碼 接著10行 l # list 顯示原始碼 接著10行 l 1 #重新顯示前10行 1可換成任意合法行號 b 10 #在第10行設定斷點 b min #在min函式開始(第一天函式體語句)處設定斷點 info b #檢視斷點資訊 會具體顯示在哪個檔案哪一行 r #run 輸入 程式才會執行 並停於斷點處 r #程式執行過程中再次輸入r會提示是否重新開始執行 而並非continue放行 n #next 執行下一條語句 不進入函式 step over s #step 執行下一條語句 進入函式 step into p a1 #print 變數名 顯示當前狀態下的變數值,此處顯示變數a1的值 c #continue 放行 執行到下一個斷點處 若無斷點則執行到程式結束 q #quit 退出gdb
vim min.c
#輸入min.c的內容
gcc min.c -o min -g #必須寫-g
gdb -q min #除錯可執行程式 -q是為了阻止顯示版本資訊
l # list 顯示原始碼 一次10行
l # list 顯示原始碼 接著10行
l # list 顯示原始碼 接著10行
l 1 #重新顯示前10行 1可換成任意合法行號
b 10 #在第10行設定斷點
b min #在min函式開始(第一天函式體語句)處設定斷點
info b #檢視斷點資訊 會具體顯示在哪個檔案哪一行
r #run 輸入 程式才會執行 並停於斷點處
r #程式執行過程中再次輸入r會提示是否重新開始執行 而並非continue放行
n #next 執行下一條語句 不進入函式 step over
s #step 執行下一條語句 進入函式 step into
p a1 #print 變數名 顯示當前狀態下的變數值,此處顯示變數a1的值
c #continue 放行 執行到下一個斷點處 若無斷點則執行到程式結束
q #quit 退出gdb
例子:
//min.c #include<stdio.h> int min(int x,int y); int min(int x,int y){ if(x<y) return x; else return y; } int main(){ int a1,a2,min_int; printf("請輸入第一個整數:"); scanf("%d",&a1); printf("請輸入第二個整數:"); scanf("%d",&a2); min_int=min(a1,a2); printf("最小的整數是:%d\n",min_int); return 0; }