gdb 除錯工具

2021-08-25 16:27:28 字數 2742 閱讀 4080

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...