Ubuntu系統使用gdb除錯C程式

2021-10-10 02:15:27 字數 2098 閱讀 5148

本文目的是通過在ubuntu系統18.04上使用gdb偵錯程式除錯c語言程式,在除錯的過程中深入了解gdb偵錯程式的用法並且熟練掌握linux系統下gdb偵錯程式的使用。

(二)執行程式時出錯

(二)gdb除錯解決問題

(三)總結

命令作用

file

裝入想要除錯的可執行檔案。

kill

終止正在除錯的程式。

list

列出產生執行檔案的源**的一部分。

next

執行一行源**但不進入函式內部。

step

執行一行源**而且進入函式內部。

run執行當前被除錯的程式。

continue

繼續執行程式。

quit

終止gdb。

watch

使你能監視乙個變數的值而不管它何時被改變。

backtrace

棧跟蹤,查出**被誰呼叫。

print

檢視變數的值。

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...