gdb除錯講解,快速入門

2021-06-11 10:47:16 字數 2185 閱讀 1782

使用gdb步驟

啟動程式的方法

gdb + 執行程式(一般在當前目錄下,如果不是,要指定路徑)

gdb + 執行程式 + core檔案。通過這個方法可以載入異常出錯時的堆疊資訊

gdb + 執行程式 + 程序id。通過這種方法可以對你正在執行的程式進行除錯。

如:

設定執行時引數,有兩種方法

在gdb + 執行程式 + 執行引數

啟動了gdb後,執行set args + 執行引數

設定斷點,方法

b(break) + 檔名:行數

b + 檔名:函式 (類內部的函式不能用這種方法)

b + 類::函式

如:(gdb) b main.cpp:foo

breakpoint 1 at 0x401392: file main.cpp, line 16.

(gdb) b main.cpp:36

breakpoint 2 at 0x4013b6: file main.cpp, line 36.

(gdb) b a::printa

breakpoint 3 at 0x401c2a: file main.cpp, line 27.

(gdb) info break

num     type           disp enb address    what

1       breakpoint     keep y   0x00401392 in foo(int) at main.cpp:16

2       breakpoint     keep y   0x004013b6 in main(int, char**) at main.cpp:36

3       breakpoint     keep y   0x00401c2a in a::printa() at main.cpp:27

(gdb)

gdb除錯常用引數

r(run)            :    開始執行程式;

c(continue)  :    繼續執行一直到斷點停止

b(break)       :   設定程式斷點;

p(print)         :    列印出變數值;如 p var,會把var變數的值輸出

s(step)         :    單步跟蹤,會進入函式內部

n(next)         :    單步跟蹤,不進入函式

finish           :     跳出函式除錯,並列印返回時的資訊

u(until)        :     跳出迴圈體

q(quit)         :     退出gdb

l(list)            :     顯示當前行後面的源程式

bt (backtrace)   :     檢視堆疊資訊

info              :      檢視各類gdb資訊以及環境資訊,比如:info break 可以檢視斷點資訊

clear            :       清除全部已定義的斷點

delete         :       刪除指點的斷點號,後面接斷點號.如:

breakpoint 4 at 0x401c36: file main.cpp, line 28.

(gdb) delete 4

(gdb) info break

no breakpoints or watchpoints.

(gdb)

我下面是我本次使用的例子

#include using namespace std;

void foo(int sum)

class a

~a(){}

void printa()

};/*

* */

int main(int argc, char** argv)

printf("sum :%d", sum);

foo(sum);

a test;

test.printa();

return 0;

}

GDB除錯(快速入門篇)

在linux平台下使用log gdb core,一般能應付絕大多數除錯程式的場景 使用者文件查閱 編譯程式時 上 g選項,關閉優化機制和建立符號表以便偵錯程式除錯 gcc g g 你能用gdb對c c 程式做什麼?1 啟動程式 2 使程式在指定條件下停止 3 當程式停止時,檢查發生了什麼 4 更改程...

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的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這...