GDB 偵錯程式使用手冊

2021-04-24 19:12:55 字數 2762 閱讀 3229

若有一檔案為test.c,在儲存退出後首先使用gcc對test.c進行編譯,注意一定要加上選項」-g」這樣編譯出的可執行**中才包含除錯資訊,否則之後gdb無法載入該可執行檔案。

# gcc –g test.c –o test

注意:gdb除錯的是可執行檔案,而不是」.c」的源**。所以必須先通過gcc編譯生成可執行檔案才可以用gdb除錯。

1>檢視檔案:在gdb中鍵入」l」即可檢視所載入的檔案。

2>設定斷點:b 「行號」 如b 10 也即在第十行設定了乙個斷點。

3>檢視斷點:info b.

4>執行**:鍵入「r」(run)即可。也可在其後面加入行表示從哪一行開始執行。

5>檢視變數的值:p 「變數名」 如檢視變數n的值:p n;

6>單步執行:它可以使用二個命令「n」(next)或「s」(step),它們的區別在於若在函式呼叫的時候「s」會進入此函式,而「n」不會進入此函式。

7>恢復程式執行:在檢視完變數及堆疊情況後,可用」c」(continue)恢復程式的正常執行。

由於gdb的命令很多,我們可以通過檢視help進行查詢。

gdb工作環境相關命令

命令格式

含義

set args執行時的引數

指定執行時的引數 如:set args 2

share args

檢視設定好的執行引數

path dir

設定程式執行路徑

show paths

檢視程式執行路徑

set environment ar[=value]

設定環境變數

show environment[var]

檢視環境變數。

cd dir

進入到dir目錄,相當於shell中的cd命令。

pwd

檢視當前的工作目錄。

shell command

執行shell的command命令

gdb設定斷點與恢復相關命令

命令格式

含義

info b

檢視所設斷點

break 行號或函式名 《條件表示式》

設定斷點

tbreak 行號或函式名 《條件表示式》

設定臨時斷點,到達後自動被刪除。

delete [斷點號]

刪除指定斷點,其斷點號為「info b」中的第一欄,若預設斷點號則刪除所有的斷點。

disable [斷點號]

停止指定斷點,使用「info b」仍能看到此斷點,同delete一樣,預設斷點號將停止所有的斷點。

enable [斷點號]

啟用指定斷點,即啟用被disable停止的斷點。

condition [斷點號]  《條件表示式》

修改對應斷點條件。

ignore [斷點號]

在程式執行中忽略對應斷點的num次

step

單步恢復程式執行,且進入函式呼叫

next

單步恢復程式執行但不進入函式呼叫

finish

執行程式,直到當前函式完成返回。

c

繼續執行函式,直到函式結束,或遇到新的斷點。

在設定斷點還有另二種斷點設定方法:

1>函式斷點。如:b sum (sum是乙個函式)

2>條件斷點。如:b 「行數」或函式名 if 表示式 如:b 8 if i==10;

gdb原始碼檢視相關命令

命令格式

含義

list 《行號》|《函式名》

檢視指定位置**。

file [檔名]

載入指定檔案。

forward-search 正規表示式

源**前向搜尋。

reverse-search 正規表示式

源**後向搜尋。

dir dir

停止路徑名。

show directries

顯示了定義了的原始檔搜尋路徑。

info line

顯示載入到gdb記憶體中的**。

gdb檢視執行資料相關命令

print 表示式|變數名

檢視程式執行時對應表示式和變數的值

x檢視記憶體變數內容。其中n為整數表示顯示記憶體的長度,f表示顯示的格式,u表示從當前位址往後請求顯示的位元組數

display 表示式

設定單步執行或其他情況中,自動顯示的對應表示式的內容

gdb的使用切記

1>    在gcc編譯選項中一定要加入」-g」.

2>    只有**處於「執行」或「暫停」狀態時才能檢視變數的值。

3>    設定斷點後程式在指定行之前停止。

CSDN markdown編輯器使用手冊

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

CSDN markdown編輯器使用手冊

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

CSDN markdown編輯器 使用手冊

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...