3

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

4

4 回答 4

6

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

ulimit -c unlimited

如果你想让它持久化,把它放在 ~/.profile

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

*   0  core    -1
于 2012-12-12T04:13:45.773 回答
2

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

如果你使用 bash。

ulimit -c unlimited
于 2012-12-12T04:12:21.980 回答
2

除了特洛伊的回答之外,您还必须添加到 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
于 2012-12-12T05:36:48.180 回答
1

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

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

ulimit -c 无限制

运行你的程序

$ ./your_program

分段错误(核心转储)

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

gdb ./your_progrm 核心

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

于 2012-12-12T04:20:01.640 回答