檢視幫助一是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...