GDB基本使用

2021-08-09 23:08:17 字數 1678 閱讀 6625

斷點:

breakpointer:break   linenum;

info break【n】:檢視斷點資訊;n表示斷點號。

break func:在某個函式的入口處打斷點;

bread +- offset:在當前行號的前面或後面的offset行處停住;

設定監視:
watch var:var為某一變數;

rwatch var:當var被讀時,停住程式。

awatch var:當var被讀或被寫時,停住程式。

info watchpoints:列出當前所有的監視點。

只有如上的兩種停止點支援if。

condition bnum expression :修改斷點號為bnum的停止條件為expression ;

設定捕捉點:
catch event:捕獲異常;
刪除停止點:
clear:清除所有已定義的停止點。

clear function:清除在函式上的所有停止點。

clear linenum:清除指定行號上的停止點。

delete [breakpoints] [range...]:刪除指定的斷點,不指定引數,刪除所有的斷點;breakpoints:斷點號,range:斷點號範圍。

disable:用法同上,但是gdb不會刪除,在此想用時,可用enable恢復。

執行:
list:從第一行開始列出原始碼,簡寫l;

next:單步執行語句,單步步過,簡寫n;

step:單步步入,簡寫s;

si或ni:執行程式直到退出迴圈體;

run:執行程式,簡寫r;

continue:繼續執行程式,簡寫c;

print:檢視某個變數的值,簡寫p;

bt、backtrace:檢視函式堆疊;

源**搜尋:search regexp :向前面搜尋;
reverse-search:全部搜尋;  

regexp:是乙個正規表示式,也是乙個 字串的匹配模式。

disassemble func:檢視函式的反彙編。

p *array@len:顯示這個動態陣列的取值。

p/x var:16進製制顯示。

自動顯示:
可以設定一些自動顯示的變數,當程式停住是這些變數會自動顯示。

display expr

display/fmt expr/addr

expr是乙個表示式,fmt表示顯示的格式,addr表示記憶體位址。

delete display [num]:刪除某個自動顯示。

檢視記憶體:
examine簡寫為x,來檢視記憶體中的值。

x/(n/f/u) addr:n/f/u為三個可選引數。

n是乙個正整數,表示記憶體的長度,也就是說當前位址向後顯示幾個位址的內容。

f表示顯示的格式。

u表示從當前位址向後請求的位元組數,如果不指定的話,gdb預設的是4位元組。

三個引數可以一起使用。

finish:退出函式。

檢視暫存器的值:

info registers regname :檢視指定暫存器的值。

info all-registers 檢視所有暫存器的值。

quit:退出gdb;

gdb基本使用方法簡介

gdb基本使用方法 前言程式 中的錯誤可分為數類,除了最容易除錯的語法錯誤,編譯程式會告訴你錯誤所在外,大部分的錯誤都可以歸類為執行時錯誤。gdb 的功能便是尋找執行時錯誤。如果沒有除錯程式,我們只能在程式中加入輸出變數值的指令來了解程式執行的狀態。有了 gdb 除錯程式,我們可以設定在任何地方停止...

gdb的基本使用方法

我們除錯程式,經常用到gdb來進行除錯程式。今天有空講一下他的基本用法。也讓自己作個記錄sort.c include include include define data array length 12 基本常用命令 gdb 常用命令 1 gdb 可執行檔案 表示對某個檔案進行除錯 2 b 函式名...

GDB 基本用法

在原來的的選項上再加上 g 選項,如 gcc g wall o2 o test test.c 或者 gcc g o test test.c。有一點需要注意的是除錯時最好去掉優化選項,比如內聯 inline 函式 優化 去掉函式呼叫,而將函式 在呼叫的位置展開 該函式名上就無法設定斷點。這是因為內聯函...