linux 环境收集core文件步骤
Linux环境下进程发生异常而挂掉通常很难查找原因但是一般Linux内核给我们提供的核心文件记录了进程在崩溃时候的信息在C语言类的大型项目中有助于深入定位。其配置流程如下1 查看生成core文件开关是否开启 ulimit -acore filesize(blocks,-c)0// 表明未开启data segsize(kbytes,-d)unlimited schedulingpriority(-e)0filesize(blocks,-f)unlimited pendingsignals(-i)2061196max lockedmemory(kbytes,-l)64max memorysize(kbytes,-m)unlimited openfiles(-n)1048576pipesize(512bytes,-p)8POSIX messagequeues(bytes,-q)819200real-timepriority(-r)0stacksize(kbytes,-s)8192cputime(seconds,-t)unlimited max userprocesses(-u)1048576virtualmemory(kbytes,-v)unlimited filelocks(-x)unlimited2 ulimit -c [kbytes]可以设置系统允许生成的core文件大小ulimit-c unlimited// 不限制core文件的大小core filesize(blocks,-c)unlimited data segsize(kbytes,-d)unlimited schedulingpriority(-e)0filesize(blocks,-f)unlimited pendingsignals(-i)2061406max lockedmemory(kbytes,-l)64max memorysize(kbytes,-m)unlimited openfiles(-n)524288pipesize(512bytes,-p)8POSIX messagequeues(bytes,-q)819200real-timepriority(-r)0stacksize(kbytes,-s)8192cputime(seconds,-t)unlimited max userprocesses(-u)131072virtualmemory(kbytes,-v)unlimited filelocks(-x)unlimited上述方式不是永久生效的要使其永久生效可以进行如下设置1 vi /etc/security/limits.d/20-nproc.conf*soft nproc unlimited root soft nproc unlimited postgres soft core unlimited postgres hard core unlimited2 指定core文件的名字与生成路径执行# vim /etc/sysctl.conf进入编辑模式加入下面两行kernel.core_pattern/var/core/core_%e_%p kernel.core_uses_pid0注释%e dump文件名%p 进程号3 在/var目录下创建core目录然后执行sysctl -p /etc/sysctl.conf命令使修改生效。4 使用调试器进行分析 最后你可以使用调试器如GDB来分析core文件以了解程序崩溃的原因。例如gdb/path/to/program/path/to/corefile这将启动GDB并加载程序和core文件你可以使用GDB命令来查看堆栈跟踪、变量值等信息以找到问题的根本原因。参考[https://blog.csdn.net/luronggui/article/details/128728235](https://blog.csdn.net/luronggui/article/details/128728235)https://mp.weixin.qq.com/s/_q4V1Q0HXLNZI3WpkWEV5w?poc_tokenHL0y4GmjDLr5qJV3GNBcBqY2COsYXA6rfOcVJ2JS