GDB偵錯程式與Core dump

2021-08-08 14:39:43 字數 981 閱讀 3020

gdb是unix/linux下的一款基於命令列的程式除錯工具,其簡單的命令和強大的功能是眾多開發者喜歡的理由,搭配core dump對乙個程式進行追蹤則更能夠大顯身手。

乙個程式如果想使用gdb除錯,則需要在編譯過程中加入除錯資訊。命令如下:

gcc -g filename.c -o filename

使用 -g 引數,使得編譯的程式帶上除錯資訊,才能夠在gdb下得以除錯。

可以看到,我們通過 r 命令來啟動除錯,通過 b 來設定斷點, n 來進行單步跳過,s 來進行單步執行,i b來顯示當前已設定的斷點,d 編號 來刪除斷點,p 變數名 來列印乙個變數的值,set 變數名來設定變數的值,q來退出除錯。了解了gdb的簡單實用,筆者就來介紹core dump又是什麼。

core dump是unix/linux下的核心轉儲,即當乙個程序異常退出之前,將程序的使用者空間記憶體資料全部以檔案方式儲存到磁碟上,檔名則稱作是core,方便gdb的除錯。系統預設是關閉的,我們需要執行命令設定轉儲的大小:

ulimit -c unlimited

設定核心轉儲的大小無限制,當然安全起見我們可以設定為1024。如果需要關閉這個功能,則設定為0。

我們將乙個可能發生錯誤的程式,在gcc編譯的時候加上-g選項填入除錯資訊,然後開啟了core dump功能,當程式發生異常退出時,在程式當前資料夾下會生成乙個名為 core.編號 的檔案,這個就是我們出錯的核心轉儲問檔案。有了這個檔案,我們就可以使用gdb來還原錯誤發生的位置和過程。命令如下:

gdb filename core.編號

然後我們就可以檢視到發生錯誤的位置和資訊,我們根據這個資訊來找到bug並加以修復。筆者這裡不提供linux上的實操圖,希望讀者自行測試,眼看千遍不如手過一遍。

GDB偵錯程式

偵錯程式gdb 一 啟動和退出gdb gdb除錯的物件是可執行檔案,而不是程式的源 如果要使乙個可執行檔案可以被gdb除錯,那麼在使用編譯器gcc編譯程式時需要加入 g選項。gdb除錯乙個程式的命令格式是 gdb 程式檔名 也可以在linux提示符下,直接輸入gdb,然後使用file命令裝入要除錯的...

gdb偵錯程式

在使用gdb偵錯程式之前,必須在編譯程式時加上 g選項 功能 顯示上次內容之前或之後的10行內容,首次使用顯示main 函式之前或之後的10行內容 命令 list 簡稱 l 功能 顯示引數行之前和之後的10行內容.命令 list line number 簡稱 l 10 功能 顯示原始檔從一行到另一行...

gdb偵錯程式

gdb是gnu發布的一款強大的除錯功能 gdb主要完成下面三個方面的功能 1 啟動被除錯程式 2 讓被除錯的程式在指定的位置停住 3 當程式停住時,可以檢視程式的狀態 變數值 gcc g test.c o test 生成除錯資訊 gdb test 啟動gdb gdb除錯工具相關命令 gdb run ...