在linux系統下core檔案的除錯方法

2021-05-22 14:09:43 字數 2712 閱讀 2591

在linux系統下core檔案的除錯方法

在程式不尋常退出時,核心有可能把該程式當前記憶體對映到core

檔案裡,核心會在當前工作目錄下生成乙個

core

檔案(當乙個程式崩潰時,在程序當前工作目錄的

core

檔案中複製了該程序的儲存影象。

core

檔案僅僅是乙個記憶體映象

(同時加上除錯資訊

),主要是用來除錯的

)。使用

gdb來檢視

core

檔案,可以指示出導致程式出錯的**所在檔案和行數。

1.core

檔案的生成開關和大小限制

--------------------------------- 1

)使用ulimit -c

命令可檢視

core

檔案的生成開關。若結果為

0,則表示關閉了此功能,不會生成

core

檔案。

2)使用

ulimit -cfilesize

命令,可以限制

core

檔案的大小(

filesize

的單位為

kbyte

)。若ulimit -cunlimited

,則表示

core

檔案的大小不受限制。如果生成的資訊超過此大小,將會被裁剪,最終生成乙個不完整的

core

檔案。在除錯此

core

檔案的時候,

gdb會提示錯誤。

2.core

檔案的名稱和生成路徑

----------------------------

若系統生成的

core

檔案不帶其它任何擴充套件名稱,則全部命名為

core

。新的core

檔案生成將覆蓋原來的

core

檔案。 1)

/proc/sys/kernel/core_uses_pid

可以控制

core

檔案的檔名中是否新增

pid作為擴充套件。檔案內容為

1,表示新增

pid作為副檔名,生成的

core

檔案格式為

core.***x;為0

則表示生成的

core

檔案同一命名為

core。

可通過以下命令修改此檔案:

echo "1" > /proc/sys/kernel/core_uses_pid 2

)proc/sys/kernel/core_pattern

可以控制

core

檔案儲存位置和檔名格式。

可通過以下命令修改此檔案:

echo "/corefile/core-%e-%p-%t" > core_pattern

,可以將

core

檔案統一生成到

/corefile

目錄下,產生的檔名為

core-

命令名-pid-

時間戳

以下是引數列表:

%p - insert pid into filename

新增pid

%u - insert current uid into filename

新增當前

uid

%g - insert current gid into filename

新增當前

gid

%s - insert signal that caused the coredump into the filename

新增導致產生

core

的訊號

%t - insert unix time that the coredump occurred into filename

新增core

檔案生成時的

unix時間

新增主機名

%e - insert coredumping executable name into filename

新增命令名

3.core

檔案的檢視

-----------------

core

檔案需要使用

gdb來檢視。

gdb ./a.out

core-file core.***x 使用

bt命令即可看到程式出錯的地方。

以下兩種命令方式具有相同的效果,但是在有些環境下不生效,所以推薦使用上面的命令。 1

)gdb -core=core.***x

file ./a.out

bt 2)

gdb -c core.***x

file ./a.out bt

4.開發板上使用

core

檔案除錯

-----------------------------

如果開發板的作業系統也是

linux

,core

除錯方法依然適用。如果開發板上不支援

gdb,可將開發板的環境(標頭檔案、庫)、可執行檔案和

core

檔案拷貝到pc的

linux

下,執行相關命令即可。

注意:待除錯的可執行檔案,在編譯的時候需要加-g,

core

檔案才能正常顯示出錯資訊!

linux系統 linux下core檔案設定

在程式不尋常退出時,核心會在當前工作目錄下生成乙個core檔案 是乙個記憶體映像,同時加上除錯資訊 使用gdb來檢視core檔案,可以指示出導致程式出錯的 所在檔案和行數。1.core檔案的生成開關和大小限制 1 使用ulimit c命令可檢視core檔案的生成開關。若結果為0,則表示關閉了此功能,...

在Linux下產生並除錯core檔案

在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...

在Linux下產生並除錯core檔案

uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file size是個0,程式出錯時不會產生core檔案了。ulimit ...