gdb偵錯程式

2021-07-06 08:15:33 字數 2023 閱讀 1490

在使用gdb偵錯程式之前,必須在編譯程式時加上-g選項

功能:顯示上次內容之前或之後的10行內容,首次使用顯示main()函式之前或之後的10行內容

命令:list

簡稱:l

功能:顯示引數行之前和之後的10行內容.

命令:list < line-number>

簡稱:l 10

功能:顯示原始檔從一行到另一行之間的所有內容.

命令:list < line1, line2>

簡稱: l 1,100

注意:在命令執行後按下enter鍵再次執行list命令,列出上次顯示內容後面的10行內容

功能:執行準備除錯的命令,後面可以跟任何引數,包括輸入輸出重定向(< , >)和shell萬用字元(*,?,[,])在內

命令:run < arg1, arg2,…>

簡寫:r < arg1, arg2, …>

命令: set args1, args2, …

功能:顯示當前gdb斷點的資訊.

命令:info break

功能:刪除指定斷點的資訊

命令:delete breakpoint < point-number>

簡寫:d breakpoint 1

功能:禁用斷點

命令:disable breakpoint < point-number>

功能:啟用斷點

命令:enable breakpoint < point-number>

功能:設定乙個觀察點

命令:watch < condition>

區別:和斷點相似,區別是:斷點實在cpu到某一位址取指令時終端, 而觀察點時在cpu到某一位址讀寫資料時中斷.

功能:對程式中的函式進行呼叫.

命令:print func(arg1, arg2, …)

功能:檢視表示式的值.

命令:print < expression>

變數的輸出格式

例子: p/x i

功能:檢視記憶體.

命令: x /3fu < address>

* n :是乙個正整數,表示顯示記憶體的長度,即指定從當前位址向後顯示幾個單位的內容(乙個單位等於幾個位元組由u引數指定).

* f :表示顯示的格式,參見變數輸出格式的引數定義.如果位址所指的是字串,那麼格式可以是s.如果是指令位址,那麼格式可以使i.

* u :表示從當前位址向後請求的位元組個數.如果不指定,gdb預設時4個b.u引數可以用這些字元代替:b表示單子節,h表示雙位元組,w表示4位元組,g表示八字節.

例子:x/3uh 0x54320 (h表示以雙位元組為乙個單位,3表示三個單位,u表示按十六進製制顯示)

功能:print檢視程式時, 每乙個print都會被記錄下來, 格式尾1,

2, 3命

令:pr

int 1

功能:檢視暫存器.

命令:info registers (檢視指定的暫存器)

info all-registers (檢視所有的暫存器)

info register < register-name> (檢視指定的暫存器的情況)

GDB偵錯程式

偵錯程式gdb 一 啟動和退出gdb gdb除錯的物件是可執行檔案,而不是程式的源 如果要使乙個可執行檔案可以被gdb除錯,那麼在使用編譯器gcc編譯程式時需要加入 g選項。gdb除錯乙個程式的命令格式是 gdb 程式檔名 也可以在linux提示符下,直接輸入gdb,然後使用file命令裝入要除錯的...

gdb偵錯程式

gdb是gnu發布的一款強大的除錯功能 gdb主要完成下面三個方面的功能 1 啟動被除錯程式 2 讓被除錯的程式在指定的位置停住 3 當程式停住時,可以檢視程式的狀態 變數值 gcc g test.c o test 生成除錯資訊 gdb test 啟動gdb gdb除錯工具相關命令 gdb run ...

Gdb 偵錯程式

除錯是所有程式設計師都會面臨的問題。如何提高程式設計師的除錯效率,更好更快地定位程式 中的問題從而加快程式開發的進度,是大家共同面對的。就如讀者熟知的 windows 下的一些 除錯工具,如 vc 自帶的如設定斷點 單步跟蹤等,都受到了廣大使用者的讚賞。那麼,在 linux 下有什麼很好的除錯工具呢...