linux下用gdb調試c程序

首先要用gdb調試C/C++程序的話,得在編譯時將調試信息添加到可執行文件中,使用gcc的 -g參數便可以做到這點。如:

gcc -g -Wall -o test test.c

編譯完後邊要啓動gdb,方法如下:

$gdb test

如果對gdb的命令不熟,可通過help來查詢,如下:

(gdb)help

gdb 的命令很多,gdb把之分成許多個種類。help命令只是例出gdb的命令種類,如果要看種類中的命令,可以使用help <class> 命令,如:help breakpoints,查看設置斷點的所有命令。也可以直接help <command>來查看命令的幫助。

gdb中,輸入命令時,可以不用打全命令,只用打命令的前幾個字符就可以了,當然,命令的前幾個字符應該要標誌着一個唯一的命令,在Linux下,你可以敲擊兩次TAB鍵來補齊命令的全稱,如果有重複的,那麼gdb會把其列出來。

使用list命令可以查看應用程序的源碼,如下:

(gdb)list 或者(gdb)list n1,n2  //列出n1和n2行之間的代碼


添加斷點

(gdb)break main

斷點設置還有其他方法,如下:

命令                               斷點方式

break function                在函數上設置一個斷點

break file:function         在指定文件的函數上設置一個斷點

break line                       在指定行號的行設置斷點

break file:line                 在指定文件的指定行號設置斷點

break address              在一個物理地址設置斷點

查看斷點信息

(gdb)info breakpoints

移除斷點

(gdb)clear  11(11爲我斷點設置的行號)

設置斷點後然後執行:

(gdb)run

run命令啓動應用程序,然後達到設置的第一個斷點後,便會顯示出下面將要執行的一行代碼

關於斷點的設置,其實還有一種斷點設置方法便是條件斷點,條件成立才添加斷點,如下:

(gdb)break test if op==5      //如果參數op等於5,則再函數test處添加斷點。

單步調試

單步調試有如下幾個命令

next、step、continue

next表示執行下一行,不進入函數體,相當於一般圖形化的調試程序的step over

step 表示執行下一行,進入函數體,相當於圖形界面的step into

continue 表示繼續執行程序直到下一個斷點

其實hia可以在next和step命令後面添加一個數值,表示這個命令執行的次數,eg:step5,表示執行5次step命令

監控變量

使用display命令來查看變量的值,如:

(gdb)display array[0]        //查看數組中第一個元素的值

設置變量

gdb也可以在調試過程中設置變量的值,使用set命令即可完成,如下:

(gdb)set array[8]=100      //設置數組array[8]值爲100

檢查堆棧

使用backtrace命令可以查看堆棧中的情況,獲得當前函數的壓棧情況,如:

(gdb)backtrace

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章