gdb偵錯程式學習與總結(熟能生巧)

2021-09-21 14:44:55 字數 1625 閱讀 1031

gcc原來的意思是gnu c compiler, 現在的意思是gnu compiler collection, gdb是gnu debugger, 在本文 , 我們學習並總結gdb的使用。

1. 不是所有的可執行檔案, 都可以用gdb來debug, 必須使用帶有除錯資訊的可執行檔案。

gcc -g test.c     其中-g就表示要帶除錯資訊。

2. gdb a.out        用gdb開啟a.out這個可執行檔案,從而進入gdb中, 顯示如下。 注意, gdb中也支援tab鍵補全操作。

(gdb)

實際上, 也可以先輸入gdb 然後輸入file a.out

3.  在gdb中輸入help, 可以查閱幫助資訊,當然, 如果你用help break, 那將得到更詳細的資訊。 help可以簡寫為h

4.  enter鍵表示執行上乙個命令。當然也可以用向上的方向鍵盤, 然後enter, 難道你不覺的後者很麻煩嗎?

5.  list  列出帶有行號的原始碼, 一般指列出一部分, 可以按enter鍵重複上乙個命令, 繼續列出。每次list預設顯示10行, 當然, 也可以人為更改這個設定。

list 60表示列出第60行左右的**, 即可能是55-65之間。

list + 顯示當前行後, list -顯示當前行前

list 55, 65 顯示之間的行數

list fun 列出fun函式**

list可以縮寫為l

可以用reverse-search逆向找, 如reverse-search printf

search和reverse-search支援正規表示式。

7. break 10 表示在第10行下斷點。 break fun表示在函式fun處下斷點。break可以簡寫為b

8. info break可以檢視下斷點的位置, 有必要讓程式設計師知道自己下了哪些斷點。

9. run 表示讓程式開始跑起來, 執行到斷點。 run可以簡寫為r

10.  next表示單步執行, 而不是執行到下一斷點。 next 2表示執行兩步。 net可以簡寫為n

11. continue表示執行到下乙個斷點, 可以縮寫為c

12. step會進入函式內部, 而next則會跳過沒有斷點的函式,stp可以簡寫為s.

13. print i 用於列印i的值, print後面也可以用表示式, print可以簡寫為p

14.watch i  監測i, 一旦i的值發生變化, 則停下來, 跟斷點有點類似。

rwatch監測讀, awatch監測讀寫(access)

info watchpoints 列舉所偶監視點

15. set var i = 100    臨時強制更改i的值, 有點流氓。

16. backtrace檢視棧資訊, 簡寫為bt. 這個非常常用。 backtrace = bt = where = info stack

17. clear 10 表示刪除第10行的斷點, delete 2表示刪除第2行的斷點。

18. 當進入乙個函式後, 可以用return 100強行返回函式, 後面的語句不執行, 夠流氓的。

19. quit退出gdb, 簡寫為q.

20. gdb a.out core,  用來除錯core dump產生的core檔案, 很有用, 在後續博文中, 我們會進行重點介紹。 

GDB偵錯程式

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

gdb偵錯程式

在使用gdb偵錯程式之前,必須在編譯程式時加上 g選項 功能 顯示上次內容之前或之後的10行內容,首次使用顯示main 函式之前或之後的10行內容 命令 list 簡稱 l 功能 顯示引數行之前和之後的10行內容.命令 list line number 簡稱 l 10 功能 顯示原始檔從一行到另一行...

gdb偵錯程式

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