gdb常用调试命令汇总!
在debug模式下,使用GDB進(jìn)行調(diào)試,可以使用的命令匯總?cè)缦?#xff1a;
(gdb) p *(*pHead)->next? ?這里聲明語句ListNode** pHead,表示查看*pHead執(zhí)行鏈表節(jié)點(diǎn)的next域的指針?
(gdb) bt full 相比bt能顯示更詳細(xì)的局部變量信息
(gdb) b ? hookfactory.cpp:173 ? 在源文件指定行數(shù)處加斷點(diǎn)
(gdb) b ? main.cpp:MURLProc 在源文件指定函數(shù)處加斷點(diǎn)
(gdb) b ? CHttpClient::initialize() 在指定類名的成員函數(shù)處加斷點(diǎn)
(gdb) l 直接在當(dāng)前stack frame中查看當(dāng)前函數(shù)的代碼,比較直觀
(gdb) info b ?列出所有斷點(diǎn)信息,包括Address,Type,description
(gdb) disa 1 禁用斷點(diǎn)
(gdb) info b[1] ?列出第一個(gè)斷點(diǎn)的信息
(gdb) delete all ?刪除所有斷點(diǎn)信息
(gdb) frame 8 or f8 查看第8層棧幀的函數(shù)調(diào)用,包括其中的局部變量
(gdb) set print elements 0 設(shè)置打印完整字符串信息,不然,未打印出的字符串會(huì)顯示“...”符號(hào)
(gdb)?p *(CModuleInfo *)gMainConfig.modules[i] ?查看復(fù)雜的結(jié)構(gòu)體信息
(gdb) p *obj.m_alt ?正常顯示結(jié)構(gòu)體的信息
(gdb) p info->m_ua_req_hdr.length() ?計(jì)算函數(shù)表達(dá)式
? $9 = 342
(gdb) p *this 打印當(dāng)前對(duì)象中各成員的值
(gdb) p this->f ?打印出指定成員f的內(nèi)部信息
(gdb) p *(char *)p 對(duì)void*類型的指針p,轉(zhuǎn)換類型后查看它的地址,使用p *p會(huì)出錯(cuò)
(gdb) f 打印函數(shù)
(gdb) set print pretty on 以整潔的格式顯示,而非顯示一整行
(gdb) p so 將類或結(jié)構(gòu)體so以排列好的格式打印出來,比如
$2 = {num = 0,link = {next=0x400530}}
(gdb) set print element 0 完整顯示字符串的值,沒有省略號(hào)...
?
在gdb環(huán)境中按快捷鍵cTRL + X + A,彈出源碼窗口,再次按該組合鍵后恢復(fù)原狀.
下面是補(bǔ)充:
?
1. 調(diào)試core dump文件時(shí),可以用frame查看堆棧的某個(gè)位置(當(dāng)然gdb調(diào)試也可以)。這樣可以看到其他位置的變量,而不僅僅是出錯(cuò)的那個(gè)地方。
2. 自定義函數(shù),譬如我需要頻繁的執(zhí)行c然后bt,可以定義個(gè)函數(shù):
?
[plain]?view plaincopy
- (gdb)?define?doit??
- >c??
- >bt??
- >end??
- ??
- ??
- 然后執(zhí)行這個(gè)函數(shù)就好了:??
- (gdb)?doit??
- 然后不斷回車就可以了。??
3.可以用x查看內(nèi)存信息,譬如查看128個(gè)字節(jié):x /128xb data_ptr,可以看到指針data_ptr的128個(gè)字節(jié)的內(nèi)存信息。
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里設(shè)置臨時(shí)變量
使用 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
總結(jié)
以上是生活随笔為你收集整理的gdb常用调试命令汇总!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中substr,substring,
- 下一篇: 最新 crtmpserver 源码的获取