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
相關文章
- linux 下GDB除錯Linux除錯
- 用GDB除錯程式除錯
- 用GDB除錯程式(六)除錯
- linux下的c/c++偵錯程式gdbLinuxC++
- linux下gdb單步除錯Linux除錯
- 用GDB除錯程式(二) (轉)除錯
- 用GDB除錯程式(四) (轉)除錯
- 用GDB除錯程式(三) (轉)除錯
- Linux中使用GDB除錯程式Linux除錯
- 使用GDB命令列偵錯程式除錯C/C++程式命令列除錯C++
- C語言——gdb除錯C語言除錯
- c/c++ gdb 除錯帶引數的程式C++除錯
- GDB 除錯程式碼除錯
- gdb除錯多程式除錯
- GDB多程式除錯除錯
- Linux GDB 程式除錯工具使用詳解Linux除錯
- 使用gdb和gdbserver除錯Android C/C++程式Server除錯AndroidC++
- C編譯: 使用gdb除錯編譯除錯
- C 編譯: 使用 gdb 除錯編譯除錯
- 使用 GDB 除錯多程式程式除錯
- Linux核心使用gdb除錯Linux除錯
- linux c之gdb常用斷點除錯總結Linux斷點除錯
- gdb除錯除錯
- GDB程式碼除錯與使用除錯
- 嵌入式GDB除錯Linux C程式或交叉編譯(開發板)除錯LinuxC程式編譯
- GDB除錯MySQL除錯MySql
- gdb除錯命令除錯
- GDB除錯指令除錯
- Linux—gdb除錯簡單實現Linux除錯
- Linux技術——gdb除錯基礎Linux除錯
- gdb除錯正在執行的程式除錯
- Linux下彙編偵錯程式GDB的使用薦Linux
- GDB除錯彙總除錯
- gdb除錯快速上手除錯
- gdb除錯多程序除錯
- gdb除錯總結除錯
- 在MacOS上使用gdb(cgdb)除錯Golang程式Mac除錯Golang
- 介紹 GDB 除錯 Go除錯Go