本文目的是通過在ubuntu系統18.04上使用gdb偵錯程式除錯c語言程式,在除錯的過程中深入了解gdb偵錯程式的用法並且熟練掌握linux系統下gdb偵錯程式的使用。(二)執行程式時出錯
(二)gdb除錯解決問題
(三)總結
命令作用
file
裝入想要除錯的可執行檔案。
kill
終止正在除錯的程式。
list
列出產生執行檔案的源**的一部分。
next
執行一行源**但不進入函式內部。
step
執行一行源**而且進入函式內部。
run執行當前被除錯的程式。
continue
繼續執行程式。
quit
終止gdb。
watch
使你能監視乙個變數的值而不管它何時被改變。
backtrace
棧跟蹤,查出**被誰呼叫。
檢視變數的值。
make
使你能不退出gdb就可以重新產生可執行檔案。
shell
使你能不離開gdb就執行unix shell命令。
whatis
顯示變數或函式型別。
break
在**里設斷點,這將使程式執行到這裡時被掛起。
info break
顯示當前斷點清單,包括到達斷點處的次數等。
info files
顯示被除錯檔案的詳細資訊。
info func
顯示所有的函式名稱。
info local
顯示當函式中的區域性變數資訊。
info prog
顯示被除錯程式的執行狀態。
delete [n]
刪除第n個斷點。
disable[n]
關閉第n個斷點。
enable[n]
開啟第n個斷點。
ptype
顯示結構定義。
set variable
設定變數的值。
call name(args)
呼叫並執行名為name,引數為args的函式。
finish
終止當前函式並輸出返回值。
return value
停止當前函式並返回value給呼叫者。
#include
void
showrevertnum
(int num)
printf
("%d\n"
,num);}
intmain()
#include
intmain()
執行程式
(2)執行程式,讓程式崩潰,從而生成core檔案
(3)gdb配合core檔案,定位問題。命令:gdb 程式名 core檔名
其次,開始除錯
gdb執行命令r
時顯示如下錯誤
繼續除錯該程式
除錯時顯示整型指標p的位址為0x0,而該位址一般不允許訪問,因此造成了記憶體錯誤。
參考解決方法
給整型指標p分配位址,這樣一般就不會出現記憶體錯誤的問題了。當然,這也有其他的方法,大家可以去自行探索。
#include
#include
intmain()
通過在ubuntu系統使用gdb偵錯程式對c程式進行除錯,我發現linux作業系統與windows系統除錯程式完全是不一樣的體驗。gdb偵錯程式讓我對於底層c語言的除錯有了更加清楚的認識,而windows系統上的ide雖然方便了除錯,但卻看不見c語言的底層除錯時如何完成的,這也是gdb除錯程式的好處之一。希望自己在以後gdb的使用中可以了解得更加深入。 ubuntu使用GDB除錯程式(入門)
終端輸入 sudo apt get install gdbgdbgdb常用命令大全參考此blog 下面的 實現對乙個整型數的反轉功能,比如輸入123,則輸出321 但輸入100時,程式的輸出結果卻不正確,請找出問題 使用vim建立程式revertnum.c include void showreve...
gdb除錯使用
功夫再牛也怕菜刀,程式設計師不可能不犯錯誤,在linux下面除錯我們使用gdb,這次就講他的使用,它可以除錯c和c gdb提供的功能有 1.監視程式中的變數的值 2。設定斷點停止 執行 3,一行行的執行 使用方式很簡單,在命令列鍵入gdb就能用了,正常啟動就會有如下類似的內容,在這裡可以鍵入命令來指...
Ubuntu下的GDB除錯
gdb gnu debugger,是gnu工程為gnu作業系統開發的 偵錯程式,但它的使用不侷限於gnu作業系統,gdb可以執行 在unix linux甚至microsoft windows。gdb可以除錯c c objective c pascal ada等語言編 寫的程式 被除錯的程式可以跟gd...