gdb常用除錯命令彙總!

2021-06-20 09:08:52 字數 2146 閱讀 7004

在debug模式下,使用gdb進行除錯,可以使用的命令彙總如下:

(gdb) p *(*phead)->next   這裡宣告語句listnode** phead,表示檢視*phead執行鍊錶節點的next域的指標 

(gdb) bt full 相比bt能顯示更詳細的區域性變數資訊

(gdb) b   hookfactory.cpp:173   在原始檔指定行數處加斷點

(gdb) b   main.cpp:murlproc 在原始檔指定函式處加斷點

(gdb) b   chttpclient::initialize() 在指定類名的成員函式處加斷點

(gdb) l 直接在當前stack frame中檢視當前函式的**,比較直觀

(gdb) info b  列出所有斷點資訊,包括address,type,description

(gdb) disa 1 禁用斷點

(gdb) info b[1]  列出第乙個斷點的資訊

(gdb) delete all  刪除所有斷點資訊

(gdb) frame 8 or f8 檢視第8層棧幀的函式呼叫,包括其中的區域性變數

(gdb) set print elements 0 設定列印完整字串資訊,不然,未列印出的字串會顯示「...」符號

(gdb) p *(cmoduleinfo *)gmainconfig.modules[i]  檢視複雜的結構體資訊

(gdb) p *obj.m_alt  正常顯示結構體的資訊

(gdb) p info->m_ua_req_hdr.length()  計算函式表示式

$9 = 342

(gdb) p *this 列印當前物件中各成員的值

(gdb) p this->f  列印出指定成員f的內部資訊

(gdb) p *(char *)p 對void*型別的指標p,轉換型別後檢視它的位址,使用p *p會出錯

(gdb) f 列印函式

(gdb) set print pretty on 以整潔的格式顯示,而非顯示一整行

(gdb) p so 將類或結構體so以排列好的格式列印出來,比如

$2 = 

}

(gdb) set print element 0 完整顯示字串的值,沒有省略號...

在gdb環境中按快捷鍵ctrl + x + a,彈出原始碼視窗,再次按該組合鍵後恢復原狀.

下面是補充:

1. 除錯core dump檔案時,可以用frame檢視堆疊的某個位置(當然gdb除錯也可以)。這樣可以看到其他位置的變數,而不僅僅是出錯的那個地方。

2. 自定義函式,譬如我需要頻繁的執行c然後bt,可以定義個函式:

[plain]view plain

copy

(gdb) define doit  

>c  

>bt  

>end  

然後執行這個函式就好了:  

(gdb) doit  

然後不斷回車就可以了。  

3.可以用x檢視記憶體資訊,譬如檢視128個位元組:x /128xb data_ptr,可以看到指標data_ptr的128個位元組的記憶體資訊。

here is an example. if a program says

int *array = (int *) malloc (len * sizeof (int));

you can print the contents of array with

p *array@len

4.gdb裡設定臨時變數

使用 set 命令。

(gdb) set $i="hello"

(gdb) ptype $i

type = char [6]

(gdb) set $i=1

(gdb) ptype $i

type = int

(gdb) set $i=(char)1

(gdb) ptype $i

type = char

(gdb) set $i=(short)1

(gdb) ptype $i

type = short

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常用除錯命令

將.c檔案程式設計成包含標準除錯資訊的檔案 命令 gcc g c o 1 啟動gdb除錯程式 兩種方式 a gdb filename b 啟動gdb後,使用file filename 2 list l 檢視程式 方便設定斷點 3 break b 函式名 在某函式入口處新增斷點 4 break 行號 ...

GDB 常用除錯命令

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