linux gdb的使用

gdb的使用

​ gdb(GNU symbolic debugger)是一個由GNU開源組織發佈的、UNIX/LINUX操作系統下的、基於命令行的、功能強大的程序調試工具。

start           #開始調試,停在第一行代碼處,(gdb)start
l               #list的縮寫查看源代碼,(gdb)l
b <lines>       #b: Breakpoint的簡寫,設置斷點。(gdb) b 8 
b <func>        #b: Breakpoint的簡寫,設置斷點。(gdb) b main
i breakpoints   #i:info 的簡寫。(gdb)i breakpoints
d [bpNO]        #d: Delete breakpoint的簡寫,刪除指定編號的某個斷點,或刪除所有斷點。斷點編號從1開始遞增。(gdb)d 1

s               #s: step執行一行源程序代碼,如果此行代碼中有函數調用,則進入該函數;(gdb) s
n               #n: next執行一行源程序代碼,此行代碼中的函數調用也一併執行。(gdb) n

r               #Run的簡寫,運行被調試的程序。如果此前沒有下過斷點,則執行完整個程序;如果有斷點,則程序暫停在第一個可用斷點處。(gdb) r
c               #Continue的簡寫,繼續執行被調試程序,直至下一個斷點或程序結束。(gdb) c
finish          #函數結束

p [var]             #Print的簡寫,顯示指定變量(臨時變量或全局變量 例如 int a)的值。(gdb) p a
display [var]       #display,設置想要跟蹤的變量(例如 int a)。(gdb) display a
undisplay [varnum]  #undisplay取消對變量的跟蹤,被跟蹤變量用整型數標識。(gdb) undisplay 1
set args            #可指定運行時參數。(gdb)set args 10 20
show args           #查看運行時參數。
q                   #Quit的簡寫,退出GDB調試環境。(gdb) q 
help [cmd]          #GDB幫助命令,提供對GDB名種命令的解釋說明。如果指定了“命令名稱”參數,則顯示該命令的詳細說明;如果沒有指定參數,則分類顯示所有GDB命令,供用戶進一步瀏覽和查詢。(gdb)help
回車                #重複前面的命令,(gdb)回車

test.c

#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a * b;
}
int main(void)
{
    char buf[] = "helloworld";
    int a = 3;
    int b = 5;  
    int c = 0;
    c = add(a, b);
    printf("%s a+b=%d\n", buf, c);
    c = sub(a, b);
    printf("%s a-b=%d\n", buf, c);
    c = mul(a, b);
    printf("%s a*b=%d\n", buf, c);
    return 0;
}
  • 編譯的時候需要加上-g參數

gcc -o test -g test.c
gdb test

發佈了101 篇原創文章 · 獲贊 117 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章