天天看點

linux下的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      

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;
}      
linux下的GDB調試 詳細
linux下的GDB調試 詳細
linux下的GDB調試 詳細
linux下的GDB調試 詳細

繼續閱讀