我希望程序在Linux上崩溃时转储核心以进行调试。如何启用此功能 - 这是否需要对程序进行任何更改?
答案 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了解更多信息。