Linux下core檔案及使用

2021-08-20 20:09:24 字數 1449 閱讀 2902

core檔案的作用:

當程式崩潰時,核心有可能把該程式當前記憶體對映到core檔案中,方便程式設計師找到程式出現問題的地方,最常出現的,幾乎所有c程式設計師都出現過的「段錯誤」了。也是最難查出問題原因的乙個錯誤

core檔案是什麼:

核心檔案(core file),也稱為核心轉存(core dump),是作業系統在程序收到某些訊號而終止執行時,將此時程序位址空間的內容以及有關程序狀態的其他資訊寫出的乙個磁碟檔案。這種資訊往往用於除錯

1.檢視core檔案開關,ulimit -a,如果core file size為0,則說明core file產生還沒開啟

2.ulimit -c 1024(1024是core檔案的大小),將core檔案開啟並給乙個檔案的大小

3.此時再次出現段錯誤則會產生core檔案

4.cat /proc/sys/kernel/core_uses_pid檢視生成的core檔案是否新增pid作為擴充套件

如果為0,說明生成的core檔案就是core檔案

如果為1,說明生成的core檔案格式為core.***x;

可以通過修改這個檔案中的值來修改生成的core檔案的名稱

也可以通過命令:echo "1" > /proc/sys/kernel/core_uses_pid來修改值

5.cat /proc/sys/kernel/core_pattern,可以檢視core檔案儲存的位置和檔名格式

可以通過命令:echo "/corefile/core-%e-%p-%t" > core_pattern,可以將core檔案統一生成到/corefile目錄下,產生的檔名為core-命令名-pid-時間戳

以下是引數列表:

%p-新增pid

%u-新增當前uid

%g-新增當前gid

%s-新增導致產生core的訊號

%t-新增core檔案生成時的unix時間

%h-新增主機名

%e-新增命令名

core檔案的檢視:

core檔案需要使用gdb檢視。

方式1:

gdb ./a.out

core-file core.***x(core.***x就是core檔名)

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

方式2:

gdb -core=core.***x(core.***x就是core檔名)

file ./a.out

bt方式3:

gdb -c core.***x(core.***x就是core檔名)

file ./a.out

bt方式2、3兩種命令的效果相同,但是有些環境下不生效,所以推薦使用方式1

gdb -core=core.***x(core.***x就是core檔名)

file ./a.out

bt

Linux下core檔案的生成和使用

當程式異常終止時,核心有可能把該程式當前的記憶體資訊對映到core檔案裡,以方便程式設計師定位問題。也就是說core檔案是程序異常終止時的乙個記憶體映象,可以用gdb來開啟core檔案,協助分析程式問題。unix環境高階程式設計 第10章種講到 當程式接收到以下訊號時會產生core檔案。名字說明 f...

Linux下core檔案除錯方法

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

Linux下core檔案除錯方法

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