gdb 除錯工具
gdb 概述
gdb , gnu debugger ,用於在 linux 上 除錯 c/c++ 程式,
參考:
ububtu gdb 指南
程式的編譯
用 gcc 編譯時,應加上 -g 引數,以讓編譯出的檔案支援 gdb 除錯,
格式:gcc -g source_file
進入 gdb
gdb file 進入 gdb 程式,對 file 進行除錯,
gdb 下的 命令
*程式顯示
l , list
顯示程式,繼續向後顯示,
l i , list i
顯示 i 行 周圍的程式,包括 上下各幾行,
l 1從第1行 開始顯示程式,
l - fun_name
顯示 函式的程式,
l -向前顯示程式,
l +向後顯示程式,同 l
show listsize
顯示1次預設顯示幾行
set listsize i
設定預設顯示 i 行,
*斷點
b i , break i
設定 i 行為斷點
b fun_name , break fun_name
設定 函式 的入口為斷點,
info b,info break
列出斷點,第1列為斷點編號
d i , delete i
刪除 編號為 i 的 斷點,
*程式 除錯 執行
r , run
執行程式
n , next
單步執行
c , continue
執行,直到下乙個斷點,或程式結束
s , step
單步進入,如果有函式呼叫,則進入該函式,
finish
跳出當前函式,返回上級函式,如果當前就是最外層函式則無效,
*檢視變數
p var_name
顯示 變數值
p *array_name@len
顯示 陣列的值,len 等於陣列的長度,可以指定其他值,如 len-1,2,
因為 *array_name 取得了 陣列的首位址,陣列記憶體是連續的,因此指定乙個長度後,就可以取出連續的值,
例子:p *arr@len 列印整個陣列
p *arr@len-1 列印陣列,不包含最後1個值,
p *arr@2 列印陣列的前2個元素
info locals
列出 當前函式中,所有區域性變數的值
info args
列出 當前函式中,所有引數的值
info catch
列出 當前函式中,異常處理資訊
x , examine
顯示 指定記憶體位址中的值
*自動顯示
display var_name
設定自動顯示的 變數 或 記憶體位址的值,當程式停住時這些值就被自動顯示,
display
顯示 被自動顯示的 列表,其中第1列時編號
undisplay i
根據編號取消 自動顯示
*觀察點
watch exp
新增 觀察點 - 值寫入,當表示式 exp 的值寫入時,停止程式,
rwatch exp
新增 觀察點 - 值讀取,當表示式 exp 的值被讀取時,停止程式,
awatch exp
新增 觀察點 - 讀寫,當表示式 exp 的值被 讀 或 寫 時,停止程式,
info watchpoints
顯示所有的 觀察點,其中第1列是編號,
delete watchpoint i
刪除指定編號的 觀察點,
*函式堆疊
bt , backtrace
顯示函式的呼叫堆疊,
f i, frame i
顯示第 i 層棧的資訊,i=0 表示棧頂,
up , up i
顯示向上 1 或 i 層 棧的資訊,
down , down i
顯示向下 1 或 i 層 棧的資訊,
info f,info frame
顯示當先棧中更多的資訊,
*程式跳轉
u , until
跳出迴圈體,
jump i
強制 跳轉到第 i 行執行
return
強制 結束當前函式
call fun_name
強制 呼叫函式
*退出 gdbq
退出 gdb
*歷史命令回車
重複 上次的命令
*搜尋
search ***
搜尋*暫存器
info registers
檢視暫存器
*其他
show language
顯示當前程式的 語言
除錯工具 gdb
gcc o a.out a.c gdb q a.out break main info register i r objdump d a.out grep a20 main.轉換為機器 objdump m intel d a.out grep a20 main.gdb 設定 1 gdb q 2 se...
gdb除錯工具
檢視幫助一是man 命令,二是進入 www.gnu.org 找到gdb的幫助文件 更詳細 gcc wall g main.c o main,只有這樣才能產生除錯資訊,包括core的除錯資訊。一 常用命令 run r 執行,執行到斷點,重新用r,表示重新開始執行。list l 列出源 l 2,l ma...
GDB除錯工具
mascot 射水魚 gdb官網 gdb適用的程式語言 ada c c objective c pascal 等。gdb的工作方式 本地除錯和遠端除錯。目前release的最新版本為8.0,gdb可以執行在linux 和windows 作業系統上。1.1 what is gdb?1 gdb gnud...