GDB 基礎除錯總結

2021-08-07 22:29:01 字數 2698 閱讀 9796

gdb是乙個由gnu開源組織發布的、unix/linux作業系統下的、基於命令列的、功能強大的程式除錯工具。

基礎除錯命令:

命令

解釋

示例

file 《檔名》

載入被除錯的可執行程式檔案。

因為一般都在被除錯程式所在目錄下執行gdb,因而文字名不需要帶路徑。

(gdb) file gdb-sample

rrun的簡寫,執行被除錯的程式。

如果此前沒有下過斷點,則執行完整個程式;如果有斷點,則程式暫停在第乙個可用斷點處。

(gdb) r

ccontinue的簡寫,繼續執行被除錯程式,直至下乙個斷點或程式結束。

(gdb) c

b 《行號》

b 《函式名稱》

b *《函式名稱》

b *《**位址》

d [編號]

b: breakpoint的簡寫,設定斷點。兩可以使用「行號」「函式名稱」「執行位址」等方式指定斷點位置。

其中在函式名稱前面加「*」符號表示將斷點設定在「由編譯器生成的prolog**處」。如果不了解彙編,可以不予理會此用法。

d: delete breakpoint的簡寫,刪除指定編號的某個斷點,或刪除所有斷點。斷點編號從1開始遞增。

(gdb) b fielname:8

(gdb) b main

(gdb) b *main

(gdb) b *0x804835c

(gdb) d

s, n

s: 執行一行源程式**,如果此行**中有函式呼叫,則進入該函式;

n: 執行一行源程式**,此行**中的函式呼叫也一併執行。

s 相當於其它偵錯程式中的「step into (單步跟蹤進入)」;

n 相當於其它偵錯程式中的「step over (單步跟蹤)」。

這兩個命令必須在有源**除錯資訊的情況下才可以使用(gcc編譯時使用「-g」引數)。

(gdb) s

(gdb) n

si, ni

si命令類似於s命令,ni命令類似於n命令。所不同的是,這兩個命令(si/ni)所針對的是彙編指令,而s/n針對的是源**。

(gdb) si

(gdb) ni

p 《變數名稱》

print的簡寫,顯示指定變數(臨時變數或全域性變數)的值。

(gdb) p i

(gdb) p nglobalvar

display ...

undisplay 《編號》

display,設定程式中斷後欲顯示的資料及其格式。

例如,如果希望每次程式中斷後可以看到即將被執行的下一條彙編指令,可以使用命令

「display /i $pc」

其中 $pc 代表當前彙編指令,/i 表示以十六進行顯示。當需要關心彙編**時,此命令相當有用。

undispaly,取消先前的display設定,編號從1開始遞增。

(gdb) display /i $pc

(gdb) undisplay 1 i

info的簡寫,用於顯示各類資訊,詳情請查閱「help i」。

(gdb) i r

qquit的簡寫,退出gdb除錯環境。

(gdb) q

help [命令名稱]

gdb幫助命令,提供對gdb名種命令的解釋說明。

如果指定了「命令名稱」引數,則顯示該命令的詳細說明;如果沒有指定引數,則分類顯示所有gdb命令,供使用者進一步瀏覽和查詢。

(gdb) help display

watch

watch命令可以觀察變數的變化,在變數變化時自動斷點

watch 可以watch 變數名或變數位址  (p &a檢視變數a的位址)

(gdb) watch a

(gdb) watch *(int *)0x7fff84b67b08

lline的簡寫,檢視當前文字**

(gdb)l

attach

attach 關聯需要除錯的程序id

檢視程序id : ps -ef|grep svr_name

(gdb) attch 3001

makefile檔案需要增加 -g 除錯,才能夠進行gdb

gdb除錯服務端:

服務端程序都已經啟動,不需要gdb再去執行,只需要attach到那個程序號即可

ps -ef|grep svr_name                //命令檢視程序id

attcht  程序id                            //關聯程序

break  filename:line_num         //設定檔案行斷點

break  function_name              //設定函式名斷點

c                                               //執行程式,直到下個斷點

gdb除錯可執行檔案:

gdb進入gdb除錯命令

通過file  filename  除錯檔案

break設定斷點

run命令執行程式

n/s命令**

不需要單步,c命令執行程式,直到下一斷點

GDB 除錯總結

啟動 gdb gdb 然後 gdb file 執行 gdb run 該程式本身的命令列引數 檢視 gdb list 簡寫為 gdb l 技巧 gdb list 1,20 檢視1到 20行的 使用斷點 建立斷點 gdb break 可以簡寫為 gdb b gdb b 這種是為還沒有開啟的源 設定斷點 ...

GDB除錯總結

一 core分析 1 檢視命令 ulimit c 啟動命令 ulimit c ulimited 檢視core檔案 gdb c core.a.out 2 生成core檔案的路徑在檔案 etc sysctl.conf中 cat etc sysctl.conf sysctl.conf檔案中科院設定的格式符...

gdb除錯總結

gdb是linux環境下最強大的除錯工具,可以除錯未執行的程式或者正在執行的程式,還可以分析程式崩潰的coredump檔案,這些的前提是,程式在編譯時新增了 g選項開啟了除錯資訊。使用方法 gdb program 對於有引數的,可以通過gdb內執行 set args param 來設定引數,或者gd...