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...