gdb除錯常用命令

2021-06-22 01:06:17 字數 1129 閱讀 9620

呼叫gdb編譯需要在cc後面加 -g引數再加-o;

[root@redhat home]#gdb 除錯檔案:啟動gdb

(gdb) l :(字母l)從第一行開始列出原始碼

(gdb) break n :在第n行處設定斷點

(gdb) break func:在函式func()的入口處設定斷點

(gdb) info break: 檢視斷點資訊

(gdb) r:執行程式

(gdb) n:單步執行

(gdb) c:繼續執行

(gdb) p 變數 :列印變數的值

(gdb) bt:檢視函式堆疊

(gdb) finish:退出函式

(gdb) shell 命令列:執行shell命令列

(gdb) set args 引數:指定執行時的引數

(gdb) show args:檢視設定好的引數

(gdb) show paths:檢視程式執行路徑;

set environment varname [=value] 設定環境變數。如:set env user=hchen;

show environment [varname] 檢視環境變數;

(gdb) cd 相當於shell的cd;

(gdb)pwd :顯示當前所在目錄

(gdb)info program: 來檢視程式的是否在執行,程序號,被暫停的原因。

(gdb)clear 行號n:清除第n行的斷點

(gdb)delete 斷點號n:刪除第n個斷點

(gdb)disable 斷點號n:暫停第n個斷點

(gdb)enable 斷點號n:開啟第n個斷點

(gdb)step:單步除錯如果有函式呼叫,則進入函式;與命令n不同,n是不進入呼叫的函式的

注意 :如果執行list 命令得到類似如下的列印,那是因為在編譯程式時沒有加入 -g 選項:

(gdb) list

1       ../sysdeps/i386/elf/start.s: no such file or directory.

in ../sysdeps/i386/elf/start.s

當然,gdb的功能遠不止這些,包括多程序/多執行緒/訊號/遠端除錯等功能在這裡均沒有提及,有需要的讀者可以參考其它資訊。

gdb除錯常用命令

gdb list 1 從第一行開始列出原始碼 一次列出10行,如果要從11行繼續列出直接輸入list或l 命令簡寫 gdb l 搜尋 func name所在位置。gdb start 開始執行程式 gdb next 簡寫n 單條執行指令 直接回車重複執行上一條命令 n gdb step 簡寫s 執行下...

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