如何启用程序在Linux上转储核心?

我希望程序在Linux上进行崩溃时转储核心以进行debugging。 如何启用此function – 是否需要程序中的任何更改?

您可以通过执行以下操作启用它:

ulimit -c unlimited 

如果你想这是持久的把它放在〜/ .profile中

另外,您可以为系统上的所有用户启用核心转储,在/etc/sercurity/limits.conf(至少在Ubuntu上)放置以下行:

 * 0 core -1 

是否生成核心转储是由shell控制的

如果你使用bash。

 ulimit -c unlimited 

除了特洛伊的回答,你将不得不添加到/ etc / sysctl.conf – 你需要在哪里和如何生成核心 – 像这样:

 kernel.core_uses_pid=1 kenrel.core_pattern= /tmp/cores/core-%e-%p-%u-%g-%s-%t fs.suid_dumpable=2 

如果你的程序是用户模式的程序。 这是一个简短的教程。

将核心文件大小设置为最大值

ulimit -c无限制

运行你的程序

$ ./your_program

分割故障(核心转储)

它会生成核心转储文件。 使用gdb来分析核心转储

gdb ./your_progrm核心

您可以参考如何使用GDB进行调试以获取更多信息。