1. 程式人生 > >在Linux上生成Core Dump檔案的配置

在Linux上生成Core Dump檔案的配置

Linux生成core dump的做法

一、 核心必須開啟選項 CONFIG_ELF_CORE;

二、配置每個程序的RLIMIT_CORE資源為RLIM_INFINITY。方法有二:

1. 在busybox的init/init.c原始檔定義了巨集CORE_ENABLE_FLAG_FILE,

#define CORE_ENABLE_FLAG_FILE "/.init_enable_core"

如果根目錄中存在此檔案,那麼run會自動設core dump檔案大小設為不限。

 #if ENABLE_FEATURE_INIT_COREDUMPS                                                                               
         {                                                                                                       
                 struct stat sb;                                                                                 
                 if (stat(CORE_ENABLE_FLAG_FILE, &sb) == 0) {                                                    
                         struct rlimit limit;                                                                    
                                                                                                                 
                         limit.rlim_cur = RLIM_INFINITY;                                                         
                         limit.rlim_max = RLIM_INFINITY;                                                         
                         setrlimit(RLIMIT_CORE, &limit);                                                         
                 }                                                                                               
         }                                                                                                       
 #endif

2. 使用ulimit命令,unlimited可以一個適當的數值。請引數man ulimit。

# ulimit -c unlimited

三、core_pattern設定

因為可執行檔案的目錄可能沒有寫入許可權,因為可以修改這個檔案,如:

# echo "/tmp/cores/core" > /proc/sys/kernel/core_pattern

詳解,請參考Documentation/sysctl/kernel.txt中core_pattern部分。

四、在PC上執行除錯

# gdb-host ./app ./core.xxxx

# arm-gdb-host ./app ./core.xxxx

# mips-gdb-host ./app ./core.xxxx