首頁 >運維 >linux運維 >在linux下core是什麼

在linux下core是什麼

藏色散人
藏色散人原創
2023-03-23 10:00:502778瀏覽

在linux下core是一個記憶體映像,同時加上偵錯資訊;在linux下遇到程式異常退出或中止,我們都會使用core檔進行分析,其中包含了程式執行時的記憶體、暫存器、堆疊指標等訊息,格式為ELF,可以理解是程式工作當前狀態轉儲成一個檔案。

在linux下core是什麼

本教學操作環境:linux5.9.8系統、Dell G3電腦。

在linux下core是什麼?

Linux下core檔案的使用方法詳解

有時候程式會異常退出而不帶任何日誌,此時就可以使用code 檔案進行分析,它會記錄程式運行的內存,暫存器,堆疊指標等資訊

core檔: 

通常在Linux 下遇到程式異常退出或中止,我們都會使用core 檔案進行分析,其中包含了程式執行時間的內存,寄存器,堆疊指針等信息,格式為ELF ,可以理解是程序工作當前狀態轉儲成一個文件,通過工具分析這個文件,我們可以定位到程序異常退出或者終止時相應的堆棧調用等信息,為解決問題提供協助。

使用core檔案偵錯 

產生方法 

檢視目前core 檔案的狀態

$ ulimit -a
...
-c: core file size (blocks)   0 # 关闭状态
...

開啟產生開關

ulimit -c unlimited
ulimit -a
...
-c: core file size (blocks)   unlimited
...

對core 檔案的大小進行限制,單位為blocks ,一般1 block=512 bytes ,設定太小可能導致不會產生檔案

$ ulimit -c 1024
$ ulimit -a
...
-c: core file size (blocks)   1024
...

關閉產生開關

ulimit -c 0
ulimit -a
...
-c: core file size (blocks)   0
...

上面對core 檔案的操作僅對目前生效,若需要永久生效,則要將對應動作寫入/etc/profile

產生路徑

## 

core 檔案預設會產生在程式的工作目錄,可以對生成路徑進行設置,需要保證對應目錄有足夠空間並具有寫入權限

echo /MyCoreDumpDir/core.%e.%p > /proc/sys/kernel/core_pattern

其中命名使用的參數列表

%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 时间 
%h - insert hostname where the coredump happened into filename # 添加主机名 
%e - insert coredumping executable name into filename # 添加命令名

/proc/sys/kernel/core_uses_pid 這個檔案的值若為1,則無論時候設定%p ,最後產生的core 檔案都會加入pid

#偵錯方法 

可以使用gdb 對core 文件進行調試,編譯是需要帶上-g 選項

$ gdb a.out
...
(gdb) core-file core
...
(gdb) bt 
...

如需要在PC 上調試嵌入式設備產生的core 文件,則需要選取相應平台的gdb 工具,並在進入gdb 後設定符號檔案的位置

$ xxx-xxx-gdb a.out
...
(gdb) solib-search-path xxx.so:xxx.so
...
(gdb) core-file core
...
(gdb) bt
...

相關推薦:《

Linux影片教學

以上是在linux下core是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn