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