使用Gdb

基本語法

調(diào)試C程序

  • 一段C代碼
#include <stdio.h>

// 對參數(shù) a 和 b 求和
int sum(int a, int b) {
    int s = a + b;
    return s;
}

// main函數(shù):程序入口
int main(int argc, char *argv[]) {
    int n = sum(1, 2); // 調(diào)用sum函數(shù)對求和
    printf("n: %d\n", n);  //在屏幕輸出 n 的值
    return 0;
}
  • 在gdb中我們通過disass main反匯編main函數(shù)
[xxx@xxx xxx]$ gdb ./gdb_usecase
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
(gdb) disass main
Dump of assembler code for function main:
   0x0000000000400547 <+0>: push   %rbp
   0x0000000000400548 <+1>: mov    %rsp,%rbp
   0x000000000040054b <+4>: sub    $0x20,%rsp
   0x000000000040054f <+8>: mov    %edi,-0x14(%rbp)
   0x0000000000400552 <+11>:    mov    %rsi,-0x20(%rbp)
   0x0000000000400556 <+15>:    mov    $0x2,%esi
   0x000000000040055b <+20>:    mov    $0x1,%edi
   0x0000000000400560 <+25>:    callq  0x40052d <sum>
   0x0000000000400565 <+30>:    mov    %eax,-0x4(%rbp)
   0x0000000000400568 <+33>:    mov    -0x4(%rbp),%eax
   0x000000000040056b <+36>:    mov    %eax,%esi
   0x000000000040056d <+38>:    mov    $0x400620,%edi
   0x0000000000400572 <+43>:    mov    $0x0,%eax
   0x0000000000400577 <+48>:    callq  0x400410 <printf@plt>
   0x000000000040057c <+53>:    mov    $0x0,%eax
   0x0000000000400581 <+58>:    leaveq
   0x0000000000400582 <+59>:    retq
End of assembler dump.

調(diào)試Go程序

  • 一段Go代碼

package main

//計(jì)算a, b的平方和
func sum(a, b int) int {
    a2 := a * a
    b2 := b * b
    c := a2 + b2

    return c
}

func main() {
    sum(1, 2)
}
  • Gdb調(diào)試Go可執(zhí)行程序
# 關(guān)閉內(nèi)聯(lián)優(yōu)化
go build -gcflags '-N -l' main.go
# 刪除調(diào)試符號(hào)
  # -s: 去掉符號(hào)信息依痊。
  # -w: 去掉DWARF調(diào)試信息。
go build -ldflags '-s -w'
[xxx@xxx xxx]$ go build -gcflags '-N -l' main.go
[xxx@xxx xxx]$ gdb main
(gdb) disass main.main
No symbol "main" in current context.
(gdb) l main.main
7       c := a2 + b2
8
9       return c
10  }
11
12  func main() {
13      sum(1, 2)
14  }
(gdb) disass main.main
Dump of assembler code for function main.main:
   0x000000000044f990 <+0>: mov    %fs:0xfffffffffffffff8,%rcx
   0x000000000044f999 <+9>: cmp    0x10(%rcx),%rsp
   0x000000000044f99d <+13>:    jbe    0x44f9cd <main.main+61>
   0x000000000044f99f <+15>:    sub    $0x20,%rsp
   0x000000000044f9a3 <+19>:    mov    %rbp,0x18(%rsp)
   0x000000000044f9a8 <+24>:    lea    0x18(%rsp),%rbp
   0x000000000044f9ad <+29>:    movq   $0x1,(%rsp)
   0x000000000044f9b5 <+37>:    movq   $0x2,0x8(%rsp)
   0x000000000044f9be <+46>:    callq  0x44f930 <main.sum>
   0x000000000044f9c3 <+51>:    mov    0x18(%rsp),%rbp
   0x000000000044f9c8 <+56>:    add    $0x20,%rsp
   0x000000000044f9cc <+60>:    retq
   0x000000000044f9cd <+61>:    callq  0x447840 <runtime.morestack_noctxt>
   0x000000000044f9d2 <+66>:    jmp    0x44f990 <main.main>
End of assembler dump.

調(diào)試C 和 Go的差異

C使用 disass main
Go使用 disass main.main

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镜悉,一起剝皮案震驚了整個(gè)濱河市空凸,隨后出現(xiàn)的幾起案子冈止,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹃彻,死亡現(xiàn)場離奇詭異,居然都是意外死亡妻献,警方通過查閱死者的電腦和手機(jī)蛛株,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門团赁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谨履,你說我怎么就攤上這事欢摄。” “怎么了笋粟?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵怀挠,是天一觀的道長。 經(jīng)常有香客問我害捕,道長绿淋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任尝盼,我火速辦了婚禮吞滞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盾沫。我一直安慰自己裁赠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布疮跑。 她就那樣靜靜地躺著组贺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祖娘。 梳的紋絲不亂的頭發(fā)上失尖,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機(jī)與錄音渐苏,去河邊找鬼掀潮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛琼富,可吹牛的內(nèi)容都是我干的仪吧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼鞠眉,長吁一口氣:“原來是場噩夢啊……” “哼薯鼠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起械蹋,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤出皇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哗戈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郊艘,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纱注。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畏浆。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狞贱,靈堂內(nèi)的尸體忽然破棺而出刻获,到底是詐尸還是另有隱情,我是刑警寧澤斥滤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布将鸵,位于F島的核電站,受9級特大地震影響佑颇,放射性物質(zhì)發(fā)生泄漏顶掉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一挑胸、第九天 我趴在偏房一處隱蔽的房頂上張望痒筒。 院中可真熱鬧,春花似錦茬贵、人聲如沸簿透。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽老充。三九已至,卻和暖如春螟左,著一層夾襖步出監(jiān)牢的瞬間啡浊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工胶背, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巷嚣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓钳吟,卻偏偏與公主長得像廷粒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子红且,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

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