gdb除錯常用命令

2021-06-28 07:17:57 字數 2099 閱讀 5842

(gdb) list 1

從第一行開始列出原始碼 一次列出10行,如果要從11行繼續列出直接輸入list或l(命令簡寫)

(gdb) l*

搜尋

func_name所在位置。

(gdb)start

開始執行程式

(gdb) next    (簡寫n)

單條執行指令 直接回車重複執行上一條命令 n

(gdb)step       (簡寫s)

執行下一行語句,如果有函式呼叫則進入函式中,類似於c#中f10

(gdb)backtrace      (簡寫bt)

檢視函式呼叫的棧幀:

(gdb) bt

#0 add_range (low=1, high=10) at text.c:6

#1 0x080483c1 in main () at main.c:14

(gdb)info locals  (簡寫i)

檢視函式區域性變數的值

(gdb) i locals

i = 0

sum = 0

(gdb)set var sum=0

修改引數的值

(gdb)frame        (簡寫f)

選擇棧幀

(gdb)print        (簡寫p)

列印表示式的值,通過表示式可以修改變數值或呼叫函式

(gdb)display x

每次停下來顯示引數x的當前值,undisplay取消顯示

(gdb)break   5 (簡寫b)

在第5行設定斷點

(gdb)continue      (簡寫c)

連續執行,到達斷點自動停下來

(gdb)i breakpoints

檢視已設定的斷點 num為斷點編號

num     type               disp     enb     address                 what

2         breakpoint     keep         y     0x080483c3     in main at main.c:9

breakpoint already hit 1 time

3         breakpoint     keep         y     0x08048411     in main at main.c:12

(gdb)delete breakpoints 2

通過編號刪除指定斷點

(gdb)disable breakpoints 2

通過編號禁用斷點  enable 啟用

(gdb) break 9 if sum != 0

斷點有效條件

(gdb)run        (簡寫r)

從頭開始連續執行

(gdb)x/7b str

列印儲存器中的內容。7b是列印格式,7表示列印7組,b表示每個位元組一組

(gdb)watch s

設定觀察點,觀察s的值變化;i watchpoints檢視設定的觀察點

指定位址時,要在位址前加上*, e.g.  watch *0x88881234

(gdb)file *.o

新增除錯檔案

(gdb)set solib-search-path <.so path>

新增動態庫引用路徑

gdb除錯常用命令

呼叫gdb編譯需要在cc後面加 g引數再加 o root redhat home gdb 除錯檔案 啟動gdb gdb l 字母l 從第一行開始列出原始碼 gdb break n 在第n行處設定斷點 gdb break func 在函式func 的入口處設定斷點 gdb info break 檢視斷...

gdb除錯常用命令

在編譯時要加上 g選項,生成的可執行檔案才能用gdb進行原始碼級除錯。使用gdb執行生成的檔案。help 可以檢視命令類別 list 命令從第一行開始列出源 一次只會顯示10行,回車可繼續列出下面的 quit 退出 start 開始執行 n next 控制語句一條一條執行 s step 單步執行 b...

gdb除錯常用命令

gcc g main.c 在目標檔案加入源 的資訊 gdb a.out gdb start 開始除錯 gdb n 一條一條執行 gdb step s 執行下一條,如果函式進入函式 gdb backtrace bt 檢視函式呼叫棧幀 gdb info i locals 檢視當前棧幀區域性變數 gdb ...