分段错误时未生成核心转储文件

时间:2010-10-16 11:01:51

标签: c linux gdb coredump

我正在尝试使用gdb调试由我的C程序引起的分段错误。运行程序时不会自动生成核心转储文件,我必须运行命令

ulimit -c unlimited

用于下次运行时生成的核心文件。

为什么不会自动生成核心转储文件,为什么每次都要运行ulimit命令以在下一次运行程序时生成核心文件?

我使用的操作系统是Ubuntu 10.10。

4 个答案:

答案 0 :(得分:19)

您需要发出命令

ulimit -c unlimited

在您的环境设置中。

如果您使用bash作为shell,则需要将上述命令放在〜/ .bashrc

答案 1 :(得分:15)

您可能还想尝试修改/etc/security/limits.conf文件,而不是将ulimit -c unlimited添加到~/.bashrc

limits.conf是在大多数Linux发行版中指定核心转储详细信息的“正确”位置。

答案 2 :(得分:9)

这是因为默认情况下,您的发行版将核心文件大小限制为0个块。您提到的ulimit命令会将该限制增加到无穷大。

我不知道Ubuntu,但是大多数发行版都有一个文件/ etc / limits,系统默认为资源限制。

答案 3 :(得分:1)

分段错误是由路径变量的无关值引起的。在我的系统上,用户为sidd@sidd-Lenovo-G460,添加的内容如下所示。

PATH=$PATH:/home/sidd/ns-allinone-2.35/bin:/home/sidd/ns-allinone-2.35/tcl8.5.10/unix:/home/sidd/ns-allinone-2.35/tk8.5.10/unix

LD_LIBRARY_PATH=/home/sidd/ns-allinone-2.35/otcl-1.14:/home/sidd/ns-allinone-2.35/lib

TCL_LIBRARY=/home/sidd/ns-allinone-2.35/tcl8.5.10/library

请参阅this blog post(非常重要)。