核心转储文件没有在分段错误上生成

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

 ulimit -c unlimited 

核心文件将在下一次运行中生成。

为什么不自动生成核心转储文件,为什么我必须每次运行ulimit命令在下一次运行程序时生成一个核心文件?

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

你需要放置命令

 ulimit -c unlimited 

在你的环境设置。

如果你使用bash作为你的shell,你需要把上面的命令放在〜/ .bashrc中

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

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

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

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

分段错误是由于路径变量的无关值。 在我的系统上,用户是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 

请参阅这篇博文 (非常重要)。