gdb除錯總結

2021-09-24 19:22:21 字數 1259 閱讀 6631

gdb是linux環境下最強大的除錯工具,可以除錯未執行的程式或者正在執行的程式,還可以分析程式崩潰的coredump檔案,這些的前提是,程式在編譯時新增了-g選項開啟了除錯資訊。

使用方法:

gdb program: 對於有引數的,可以通過gdb內執行 set args param 來設定引數,或者gdb --args ./program arg1 arg2

gdb attach pid:直接掛載pid程序,此時程序會停止執行,需要命令c來繼續執行

gdb program coredumpname :分析程式產生的coredump檔案

1. 打斷點

使用break進行打斷點 ,簡寫為b , 對程式的第三行進行打斷點: b 3

如果是多個檔案,可以對某個檔案的某一行打斷點,如對gdb_test.c的第三行打斷點: b gdb_test.c:3 

可以對某個函式進行打斷點 ,對本程式中func()函式打斷點: b func

同理也可以對多個檔案中的某乙個檔案的函式打斷點 : b gdb_test.c:func

2. gdb常用命令

l :檢視原**(l n,從第n行開始檢視**。l  函式名:檢視具體函式)

n:單步除錯(逐過程,函式直接執行)

s:單步除錯(逐語句:跳入自定義函式內部執行)

fin: 跳出函式

c:從當前位置開始繼續執行程式

r:從頭開始執行程式

return:它會跳過當前函式後面的語句直接返回,返回值可以自定義,緊跟在return命令後面即可

display:追蹤檢視具體變數值

watch:被設定觀察點的變數發生修改時,列印顯示

info b:檢視斷點

delete breakpoints:刪除所有斷點

delete breakpoints id:刪除編號為id的斷點

info inferiors :檢視程序

info threads :檢視執行緒

thread n(n代表第幾個執行緒,不是執行緒id):切換執行緒

bt : 檢視當前執行緒棧結構

f frameid : 調到指定幀

info frame : 檢視當前幀暫存器資訊

disassemble : 檢視當前幀函式的反彙編**

ptype p : 顯示變數的型別,如果是乙個物件,可以顯示資料字段和成員方法,如果我想要真正的型別,必須先設定print物件的變數: set print object on

GDB 除錯總結

啟動 gdb gdb 然後 gdb file 執行 gdb run 該程式本身的命令列引數 檢視 gdb list 簡寫為 gdb l 技巧 gdb list 1,20 檢視1到 20行的 使用斷點 建立斷點 gdb break 可以簡寫為 gdb b gdb b 這種是為還沒有開啟的源 設定斷點 ...

GDB除錯總結

一 core分析 1 檢視命令 ulimit c 啟動命令 ulimit c ulimited 檢視core檔案 gdb c core.a.out 2 生成core檔案的路徑在檔案 etc sysctl.conf中 cat etc sysctl.conf sysctl.conf檔案中科院設定的格式符...

GDB 基礎除錯總結

gdb是乙個由gnu開源組織發布的 unix linux作業系統下的 基於命令列的 功能強大的程式除錯工具。基礎除錯命令 命令 解釋 示例 file 檔名 載入被除錯的可執行程式檔案。因為一般都在被除錯程式所在目錄下執行gdb,因而文字名不需要帶路徑。gdb file gdb sample rrun...