gdb除錯工具

2021-06-14 03:25:07 字數 1276 閱讀 1667

檢視幫助一是man 命令,二是進入

www.gnu.org

,找到gdb的幫助文件(更詳細)。

gcc -wall -g main.c -o main,只有這樣才能產生除錯資訊,包括core的除錯資訊。

一、常用命令

run(r)  執行,執行到斷點,重新用r,表示重新開始執行。

list(l)  列出源**,l 2,l main,l 2,16(數字表示行數)。

break(b)  設定斷點,b 2,b main。

info break(i b)  檢視斷點資訊。

watch  觀察變數,相當於在變數處設定了斷點。

continue(c)  繼續程式執行,直到下乙個斷點,配合watch使用,因為watch實際上就是設定了斷點。

step(s)

單步跟蹤,類似於vc中的step in。

next(n)  單步跟蹤,類似於vc中的step out。

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

until(u)  退出迴圈。

print(p)  檢視執行時的變數以及表示式。

print(p) array  檢視陣列,print(p) array[1],檢視陣列第2個元素。

print(p) *array@len  檢視動態記憶體。

print(p) x=5   改變執行時資料。

二、segmentation fault (core dumped) 段錯誤

段錯誤是由於訪問非法位址記憶體而產生的錯誤。在程式崩潰時,一般會生成乙個檔案叫core檔案。core檔案記錄的是程式崩潰時的記憶體映像,並加入除錯資訊。core檔案生成的過程叫做core dump。

ulimit -c  檢視core-dump狀態,如果為0,則不產生core檔案。

ulimit -a  檢視core檔案佔的大小。

ulimit -c unlimited(或數字) 設定後,產生core檔案。

#include #include void segfault()

int main(void)

gcc -wall -g main.c -o main 沒有錯誤

./main 出現segmentation fault (core dumped),產生core檔案

gdb main

r 會顯示出錯的**

bt 會知道**所在的函式

同理,gdb main core

r 會顯示出錯的**

bt 會知道**所在的函式

除錯工具 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...

GDB除錯工具

mascot 射水魚 gdb官網 gdb適用的程式語言 ada c c objective c pascal 等。gdb的工作方式 本地除錯和遠端除錯。目前release的最新版本為8.0,gdb可以執行在linux 和windows 作業系統上。1.1 what is gdb?1 gdb gnud...

gdb除錯工具

gdb是gnu的除錯工具,它可以跟蹤被除錯的程式,進行設定斷點 單步執行等操作。主要用於程式的排錯,方便找出程式錯誤所在處。如寫乙個程式測試char型別所能表示整數。建立乙個moshou.c檔案,寫入 include include int main printf d n strlen a retu...