gdb工具的使用

2021-06-21 11:55:26 字數 2172 閱讀 8943

gdb是乙個互動式的除錯工具,在linux系統中可以很好地幫助我們完成程式的除錯。

它的主要功能有:

1. 設定斷點,讓程式直接執行至可能出錯的地方

2. 檢視變數的值,在除錯過程中隨時檢視我們關注的變數的值。

3. 修改變數的值,這是vs的偵錯程式所不具有的功能,可以幫助我們更快的定位程式的問題所在。

那麼gdb除錯工具要怎麼用呢?

1. 首先編譯可執行程式的時候需要增加額外的編譯選項-g. 例如,原始碼為example.c的檔案需要用gcc -g -o example example.c.

2. 執行gdb example,進入到gdb除錯命令列的輸入介面。

3. 進入到除錯介面以後如何除錯呢?接下來介紹幾個比較有用並且除錯中常用的命令。

(1)list命令,顯示原始檔的內容,可以用list 4,8只顯示第4行到第8行的內容。

(2)break line-number, break function-name, break line/functionname if condition, break filename:line-number/function-name

分別對應在指定行號設定斷點,函式名字前設定斷點,滿足condition條件時斷點有效,在相應原始檔的某行/某函式設定斷點。

(3)info break,顯示當前設定的所有斷點。

(4)run,執行程式,在斷點處停下

(5)print i, 列印變數當前值;print expression,列印任意表示式的值;print func(i),列印呼叫某函式的返回值。

(6)step,單步執行;next, 單步執行不進入函式;continue,繼續執行至下乙個斷點。

(7)set variable i=7,設定變數的值。

(8)clear line-num,刪除指定的斷點,使用delete刪除所有的斷點。

(9)whatis i/whatis function-name,檢視制定變數的資料型別或者函式的型別。type = int/ type = int (void)

backtrace 顯示程式中的當前位置和表示如何到達當前位置的棧跟蹤(同義詞:where) 

breakpoint 在程式中設定乙個斷點 

cd 改變當前工作目錄 

clear 刪除剛才停止處的斷點 

commands 命中斷點時,列出將要執行的命令 

continue 從斷點開始繼續執行 

delete 刪除乙個斷點或監測點;也可與其他命令一起使用 

display 程式停止時顯示變數和表達時 

down 下移棧幀,使得另乙個函式成為當前函式 

frame 選擇下一條continue命令的幀 

info 顯示與該程式有關的各種資訊 

jump 在源程式中的另一點開始執行 

kill 異常終止在gdb 控制下執行的程式 

list 列出相應於正在執行的程式的原檔案內容 

next 執行下乙個源程式行,從而執行其整體中的乙個函式 

print 顯示變數或表示式的值 

pwd 顯示當前工作目錄 

pype 顯示乙個資料結構(如乙個結構或c++類)的內容 

quit 退出gdb 

reverse-search 在原始檔中反向搜尋正規表示式 

run 執行該程式 

search 在原始檔中搜尋正規表示式 

set variable 給變數賦值 

signal 將乙個訊號傳送到正在執行的程序 

step 執行下乙個源程式行,必要時進入下乙個函式 

undisplay display命令的反命令,不要顯示表示式 

until 結束當前迴圈 

up 上移棧幀,使另一函式成為當前函式 

watch 在程式中設定乙個監測點(即資料斷點) 

whatis 顯示變數或函式型別 

附2 檢視和修改程式通用暫存器

有一組專用的gdb變數可以用來檢查和修改計算機的通用暫存器,gdb提供了目前每一台計算機中實際使用的4個暫存器的標準名字: 

l $pc : 程式計數器 

l $fp : 幀指標(當前堆疊幀) 

l $sp : 棧指標 

l $ps : 處理器狀態 

使用print $pc列印各暫存器的值。

gdb工具的使用

info registers info all registers 下面這兩個暫時不知道如何使用 info registers reggroup info registers regname four standard register name pc sp fp ps p x pc x i pc ...

gdb工具使用

gdb是乙個由gnu開源組織發布的 unix linux作業系統下的 基於命令列的 功能強大的程式除錯工具。對於一名linux下工作的c 程式設計師,gdb是必不可少的工具。以下程式為例 include include int add sum int a,int b int main int arg...

(四)GDB工具的使用

寫乙個.c或者.cpp程式都可以用gdb工具來除錯。在linux環境下,用gcc來編譯鏈結,可以用makefile指令碼來做管理,makefile指令碼網上有許多資料,就不專門寫部落格來記錄了。一 準備好原始檔 這裡使用helloworld helloworld.c檔案內容如下 int main r...