我希望程序在 Linux 上崩溃时转储内核以进行调试。如何启用此功能 - 这是否需要对程序进行任何更改?
问问题
398 次
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 回答