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

时间:2012-12-12 04:09:04

标签: c linux core

我希望程序在Linux上崩溃时转储核心以进行调试。如何启用此功能 - 这是否需要对程序进行任何更改?

4 个答案:

答案 0 :(得分:6)

您可以通过以下方式为自己启用:

ulimit -c unlimited

如果你想要持久化,请将它放在〜/ .profile

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

*   0  core    -1

答案 1 :(得分:2)

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

如果你使用bash。

ulimit -c unlimited

答案 2 :(得分:2)

除了Troy的回答,您还必须添加到e / etc / sysctl.conf - 您需要在何处以及如何生成核心 - 像这样:

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

答案 3 :(得分:1)

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

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

  

ulimit -c unlimited

运行程序

  

$ ./your_program

     

分段错误(核心转储)

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

  

gdb ./your_progrm core

您可以参考How to Debug Using GDB了解更多信息。