gdb除錯簡單入門

2021-08-03 10:50:56 字數 1497 閱讀 9956

gdb 簡單入門

使用過程

1.生成程式檔案

gcc -g main.cpp -o helloworld

2.進入gdb除錯介面

gdb ./helloworld

3.斷點設定

新增斷點:命令:b(break)

b main(函式名)

b main.cpp:12(檔名

+行號)

b 12(行號)

b object::create(類名

+成員函式)

刪除斷點

del break 2(2表示第二個)

顯示斷點

info break

4.執行

重頭開始執行

r(run)

執行斷點後的下一步:n (next)

n 執行下一步

n 2 執行下面2步

程式繼續執行直到下一斷點或結束

c(continue)

5.顯示變數

p(print)

p a(a為變數)

p a+b(顯示a+b的值)

p (object*)p1->a

*p ("%d",12);

6. 監視變數記憶體

x/16xb buf

(buf為位址變數)

16:顯示16個以b(byte)

為單位的記憶體

x d u f s :

x 16進製制

d 10進製

u unsigned int

f 小數

s 字串

b h w g :1 2 4 8位元組

b byte

h half-word

w word

g gaint

disp(display)監視變數

disp a

(a是變數名)

7.退出程式介面

q(quit)

段錯誤檢視發生錯誤時的棧資訊

bt(backtrace)

應用使用場景

-單元測試

-段錯誤定位

不適用場景

-大型程式

-尤其是多執行緒程式

-單步除錯時問題無法復現,

只能在正常執行時復現

(使用列印除錯)

其他檢視是否帶有除錯資訊:

法1:objdump –h helloworld.exe

法2:(直接使用)

gdb helloworld.exe

檢視原始碼

命令:l(list)

l 不加引數

//顯示原始碼 若一次未能全部顯示

,則按enter鍵

檢視幫助:

help x(x為命令)

help info(info為命令)

GDB除錯入門

除錯符號 g 是在編譯的時候產生,而非鏈結的時候產生 所以 編譯成.o檔案時候,需要帶這個選項.1.執行命令 gdb 可執行檔案 如果不是 g選項編譯出來的,會直接告訴你,不能除錯 2.通過list標出檔案 多個原始檔可以是 list a.cpp 10 表示列出原始檔a.cpp的第十行 不指定行號,...

GDB除錯入門

用gdb除錯程式 gdb概述 gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這...

簡單GDB除錯

生成可用gdb除錯的可執行程式 g 會保留原始檔中的函式名和變數名 啟動gdbgdb 可執行程式名 set args 給程式傳參檢視程式中的源 當前檔案 l list l 行號 l 函式名 非當前檔案 l 檔名 行號 l 檔名 函式名 檢視當前可顯示的行數 show listsize 預設是顯示10...