GDB 除錯基本操作

2021-10-06 14:20:47 字數 1475 閱讀 1714

gdb 切換到圖形頁面 ctrl + x + a

一.基本命令

1.如何進入gdb :    gdb 可執行程式名稱(前提是編譯的時候需要加-g進行編譯)

2.gdb中清空螢幕: shell clear

3.設定斷點:           b(break) + 行號/函式名/檔名:行號/...   [斷點可以設定多個]

4.檢視斷點資訊:     info breakpoints

5.使斷點失效:        disable + 斷點的編號         使斷點有效: enable + 斷點的編號

6.刪除斷點:           clear + 行號/函式名/檔名:行號/...

delete +斷點編號(斷點編號之間可以用空格隔開,若沒有引數,預設刪除所有斷點)

7.讓程式繼續執行: continue

8.檢視變數的值:     p(print) + 變數名

10.進入函式:         s(step)

11.讓函式執行:       r(run)

12.退出dgb:         q(quit)

二.多執行緒除錯

1.  info threads:  檢視所有執行的執行緒資訊, *表示當前除錯的執行緒

2. thread + 執行緒號 表示切換執行緒

3. set scheduler-locking on  開始多執行緒單獨除錯,讓待除錯執行緒跑,其它執行緒阻塞。

4. set scheduler-locking off 關閉多執行緒單獨除錯,其它執行緒不阻塞。

三.多程序除錯

1.  attach + pid 載入程序

2. set follow-fork-mode [parent|child]   set detach-on-fork [on|off]

parent                   on               只除錯主程序(gdb預設)

child                      on               只除錯子程序

parent                   off              同時除錯兩個程序,gdb跟主程序,子程序block在fork位置

child                      off              同時除錯兩個程序,gdb跟子程序,主程序block在fork位置

四.段錯誤除錯

1.  bt(backtrace)  檢視堆疊資訊(一般出現段錯誤會檢視);

bt + n 表示顯示棧頂的n個幀資訊 ;

bt + -n 表示顯示棧底的n個幀資訊。

2. frame + 堆疊幀(數字): 切換到幾號堆疊幀

3. up 向上乙個堆疊  up 後可加數字表示向上跳轉到幾個堆疊幀

4. down 向下乙個堆疊 down 後可加數字表示向下幾個堆疊幀

5. info frame 列印幀的資訊

6. info args 列印變數的值

0824 gdb除錯 vim基本操作

ulimit a 顯示分配資源資訊 如果行要顯示錯誤檔案core 需要設定 1.gdb 方面 編譯時 gcc g o main main.c 若要進行 gdb 除錯 必須有 g gdb 中 stop 暫停程序 list 顯示 break 設定斷點 info breakpoint 顯示斷點資訊 dis...

gdb基本除錯命令

因為近期在vim編輯器裡面嘗試著寫寫程式,然後就接觸到了gdb除錯。才剛剛接觸還是不很懂,像什麼設定斷點呀單步除錯呀什麼的,現在還沒怎麼用上。在這裡只是先寫一些自己剛剛學到的。之後的以後用到了在補充。首先是在vim裡面寫好了乙個簡單的程式,儲存為test 1.c.include int main 就...

gdb除錯基本技巧

本文主要介紹一些簡單的 常用的gdb除錯技巧。環境 gnu gdb gdb red hat enterprise linux 7.2 60.el6 4.1 1 include 2 3int test func2 void 4 1011 void test func1 int flag 12 14in...