GDB除錯工具的使用

2021-10-07 18:27:29 字數 1462 閱讀 3361

為什麼需要用gdb

作為一名程式設計師,最大的夢想就是寫出不帶bug的**,但是現實難免有時候不如人意;所以我們常常需要借助一些工具幫我們查詢**的語法錯誤和邏輯錯誤。編譯時我們會採用gcc進行語法錯誤的檢查,而gcc並不能為我們檢查程式上邏輯的錯誤,所以需要通過除錯工具來協助我們排查邏輯錯誤,而linux下常用的除錯工具就是gdb了。或許各位比較喜歡那種圖形介面方式的,像vc、bcb等ide的除錯,但如果你是在 unix與linux平台下做軟體,你會發現gdb這個除錯工具相比於vc、z的優點是具有修復網路斷點以及恢復鏈結等功能,比bcb的圖形化偵錯程式有更強大的功能。所謂「尺有所短,寸有所長」就是這個道理。

gdb的功能

(1)啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式

(2)可讓被除錯的程式在你所指定的調置的斷點處停住

(3)當程式被停住時,可以檢查此時你的程式中所發生的事

(4)你可以改變你的程式,將乙個bug產生的影響修正從而測試其他bug

以centos7舉例,使用root使用者登入,使用如下命令進行安裝

yum -y install gdb

備註:上述指令可以多次執行,當你安裝過一次後,再次執行則會去檢查是否有更新,有的話就會自動安裝最新版本的gdb

使用gdb可以分為兩個步驟,第一步是編譯,第二步就是執行除錯

編譯預設gcc編譯出來的可執行檔案是不包含源**的,所以編譯時後需要加入-g引數進行編譯

gcc -g -o test test.c

除錯

gdb test

命令命令縮寫

命令說明

set args

設定主程式的引數

break

b設定斷點,b 12表示在第12行設定斷點,可以設定多個斷點

runr

開始執行程式, 程式執行到斷點的位置會停下來,如果沒有遇到斷點,程式一直執行下去,直到主函式退出

next

n執行當前行語句,如果該語句為函式呼叫,不會進入函式內部執行

step

s執行當前行語句,如果該語句為函式呼叫,則進入函式執行其中的第一條語句。注意了,如果函式是庫函式或第三方提供的函式,用s也是進不去的,因為沒有源**,如果是您自定義的函式,只要有原始碼就可以進去

print

p顯示變數值,例如:p name表示顯示變數name的值

continue

c繼續程式的執行,直到遇到下乙個斷點

set var name=value

設定變數的值,假設程式有兩個變數:int ii; char name[21];set var ii=10 把ii的值設定為10;set var name=「vies」 把name的值設定為"vies"

quit

q退出gdb環境

gdb除錯工具使用

gdb命令使用格式如下 gdb 選項 可執行程式 core檔案 程序id 常用選項 c core檔案 使用指定core檔案檢查程式 h 列出命令選項的簡要介紹 n 忽略 gdbinit檔案中指定的執行命令 q 禁止顯示介紹資訊和版權資訊 s 檔案 使用儲存在指定檔案中的符號表 gdb除錯時會用到的命...

gdb除錯工具使用

gdb是gcc的除錯工具,主要用於c和c 語言編寫的程式。通過gdb除錯工具,我們可以設定斷點 檢視變數 動態改變程式的執行環境等,可以很好的幫助我們查詢程式的bug。gcc g test.c o test g g test.cpp o test 命令 解釋gdb program gdb progr...

除錯工具 gdb

gcc o a.out a.c gdb q a.out break main info register i r objdump d a.out grep a20 main.轉換為機器 objdump m intel d a.out grep a20 main.gdb 設定 1 gdb q 2 se...