在使用gdb偵錯程式之前,必須在編譯程式時加上-g選項
功能:顯示上次內容之前或之後的10行內容,首次使用顯示main()函式之前或之後的10行內容命令:list
簡稱:l
功能:顯示引數行之前和之後的10行內容.命令:list < line-number>
簡稱:l 10
功能:顯示原始檔從一行到另一行之間的所有內容.注意:在命令執行後按下enter鍵再次執行list命令,列出上次顯示內容後面的10行內容命令:list < line1, line2>
簡稱: l 1,100
功能:執行準備除錯的命令,後面可以跟任何引數,包括輸入輸出重定向(< , >)和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 下有什麼很好的除錯工具呢...