gdb調(diào)試技巧一

1.編譯時加上一個-g

默認(rèn)編譯生成的可執(zhí)行文件是無法使用 gdb 來跟蹤或調(diào)試的,因為可執(zhí)行程序中沒有可供 gdb 調(diào)試使用的特殊信息赋访,為了將必要的調(diào)試信息整合到可執(zhí)行文件中缓待,我們便需要用到 -g 選項,這樣生成的可執(zhí)行程序步悠,倘若出現(xiàn)問題国葬,便可以使用 gdb 找出問題具體出現(xiàn)的位置芹壕,便于問題的解決踢涌。



2.開始調(diào)試

gdb xxx(可執(zhí)行程序)



3.查看源碼

在gdb中輸入l,不能完全顯示,多次l



4.下斷點

方式1、根據(jù)函數(shù)名睁壁,查找符號(symbol)設(shè)置斷點?

例子:b func_name

方式2潘明、根據(jù)代碼行位置設(shè)置斷點?

例子:b /src/codefile.cc:81

方式3、根據(jù)運行時的地址設(shè)置斷點?

例子1:b *0x5859c0厚宰。"*"號是必須加在地址前的,0x5859c0為函數(shù)指針的地址



5.查看變量的值

在gdb中p或者print

(1).程序變量
在GDB中澈蝙,你可以隨時查看以下三種變量的值:

1撵幽、全局變量(所有文件可見的)

2、靜態(tài)全局變量(當(dāng)前文件可見的)

3逗载、局部變量(當(dāng)前Scope可見的)

如果你的局部變量和全局變量發(fā)生沖突(也就是重名)链烈,一般情況下是局部變量會隱藏全局變量,也就是說捏膨,如果一個全局變量和一個函數(shù)中的局部變量同名時食侮,如果當(dāng)前停止點在函數(shù)中,用print顯示出的變量的值會是函數(shù)中的局部變量的值链快。如果此時你想查看全局變量的值時眉尸,你可以使用“::”操作符:

file::variable

function::variable

可以通過這種形式指定你所想查看的變量噪猾,是哪個文件中的或是哪個函數(shù)中的。

(2).查看數(shù)組

有時候袱蜡,你需要查看一段連續(xù)的內(nèi)存空間的值坪蚁。比如數(shù)組的一段,或是動態(tài)分配的數(shù)據(jù)的大小贱田。你可以使用GDB的“@”操作符嘴脾,“@”的左邊是第一個內(nèi)存的地址的值,“@”的右邊則你你想查看內(nèi)存的長度彩倚。例如,你的程序中有這樣的語句:

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

于是蔬蕊,在GDB調(diào)試過程中哥谷,你可以以如下命令顯示出這個動態(tài)數(shù)組的取值:

p?*array@len?

如果是靜態(tài)數(shù)組的話,可以直接用print數(shù)組名猜扮,就可以顯示數(shù)組中所有數(shù)據(jù)的內(nèi)容了监婶。

(3).輸出格式

一般來說惑惶,GDB會根據(jù)變量的類型輸出變量的值。但你也可以自定義GDB的輸出的格式带污。例如鱼冀,你想輸出一個整數(shù)的十六進(jìn)制,或是二進(jìn)制來查看這個整型變量的中的位的情況充易。要做到這樣翘紊,你可以使用GDB的數(shù)據(jù)顯示格式:

x 按十六進(jìn)制格式顯示變量藐唠。

d 按十進(jìn)制格式顯示變量宇立。

u 按十六進(jìn)制格式顯示無符號整型踪宠。

o 按八進(jìn)制格式顯示變量。

t 按二進(jìn)制格式顯示變量妈嘹。

a 按十六進(jìn)制格式顯示變量柳琢。

c 按字符格式顯示變量。

f 按浮點數(shù)格式顯示變量。

(4).查看內(nèi)存

你可以使用examine命令(簡寫是x)來查看內(nèi)存地址中的值柬脸。x命令的語法如下所示:

x/

n他去、f、u是可選的參數(shù)倒堕。

n 是一個正整數(shù)灾测,表示顯示內(nèi)存的長度,也就是說從當(dāng)前地址向后顯示幾個地址的內(nèi)容垦巴。

f 表示顯示的格式媳搪,參見上面骤宣。如果地址所指的是字符串秦爆,那么格式可以是s,如果地十是指令地址憔披,那么格式可以是i等限。

u 表示從當(dāng)前地址往后請求的字節(jié)數(shù),如果不指定的話芬膝,GDB默認(rèn)是4個bytes精刷。u參數(shù)可以用下面的字符來代替,b表示單字節(jié)蔗候,h表示雙字節(jié)怒允,w表示四字節(jié),g表示八字節(jié)锈遥。當(dāng)我們指定了字節(jié)長度后纫事,GDB會從指內(nèi)存定的內(nèi)存地址開始,讀寫指定字節(jié)所灸,并把其當(dāng)作一個值取出來丽惶。

表示一個內(nèi)存地址。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爬立,一起剝皮案震驚了整個濱河市钾唬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侠驯,老刑警劉巖抡秆,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吟策,居然都是意外死亡儒士,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門檩坚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着撩,“玉大人诅福,你說我怎么就攤上這事⊥闲穑” “怎么了氓润?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長薯鳍。 經(jīng)常有香客問我旺芽,道長,這世上最難降的妖魔是什么辐啄? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任采章,我火速辦了婚禮,結(jié)果婚禮上壶辜,老公的妹妹穿的比我還像新娘悯舟。我一直安慰自己,他們只是感情好砸民,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布抵怎。 她就那樣靜靜地躺著,像睡著了一般岭参。 火紅的嫁衣襯著肌膚如雪反惕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天演侯,我揣著相機(jī)與錄音姿染,去河邊找鬼。 笑死秒际,一個胖子當(dāng)著我的面吹牛悬赏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娄徊,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闽颇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寄锐?” 一聲冷哼從身側(cè)響起兵多,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎橄仆,沒想到半個月后剩膘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡沿癞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年援雇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椎扬。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡惫搏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚕涤,到底是詐尸還是另有隱情筐赔,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布揖铜,位于F島的核電站茴丰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏天吓。R本人自食惡果不足惜贿肩,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望龄寞。 院中可真熱鬧汰规,春花似錦、人聲如沸物邑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽色解。三九已至茂嗓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間科阎,已是汗流浹背述吸。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留锣笨,地道東北人刚梭。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像票唆,于是被迫代替她去往敵國和親朴读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 程序調(diào)試的基本思想是“分析現(xiàn)象->假設(shè)錯誤原因->產(chǎn)生新的現(xiàn)象去驗證假設(shè)”這樣一個循環(huán)過程走趋,根據(jù)現(xiàn)象如何假設(shè)錯誤原...
    Manfred_Zone閱讀 16,541評論 0 26
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評論 0 5
  • 《肥肉先生》自半個月之前連續(xù)更文衅金,內(nèi)心在緩緩地變化著,猶如山村鼓樓里林間的一條小溪簿煌,緩緩悠悠蕩蕩肆意撒歡兒流淌氮唯,讓...
    肥肉先生閱讀 2,249評論 13 3
  • 現(xiàn)金流量表 記錄這家公司在這個財政年度中,現(xiàn)金的流入和流出姨伟,是對一段時間的描述惩琉。 經(jīng)營活動現(xiàn)金流 由于經(jīng)營活動產(chǎn)生...
    逐日的我閱讀 473評論 0 1