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