应用程序在运行过程中由于各种异常或者bug导致退出,在满足一定条件下产生一个core文件,
通常core文件包含了程序运行时内存、寄存器状态、堆栈指针、内存管理信息以及函数调用堆栈信息。
如果需要使用需要通过ulimit进行设置,可以通过ulimit -c查看当前系统是否支持coredump,如果为0则表示coredump被关闭。
通过ulimit -c unlimited可以打开coredump,coredump文件默认存储位置与可执行文件在同一目录下,文件名为core。
查询core dump文件路径:
cat /proc/sys/kernel/core_pattern
修改生成core文件的路径
/sbin/sysctl -w kernel.core_pattern=/home/bak/coredump/%e_core.%p
为了更详尽的记录core dump当时的系统状态,可通过以下参数来丰富core文件的命名:
%% 单个%字符
%p 所dump进程的进程ID
%u 所dump进程的实际用户ID
%g 所dump进程的实际组ID
%s 导致本次core dump的信号
%t core dump的时间 (由1970年1月1日计起的秒数)
%h 主机名
%e 程序文件名