核心转储文件没有生成分段错误
问题描述:
我想调试由我的C程序使用gdb
引起的分段错误。当我运行我的程序不会自动生成一个核心转储文件,我已经运行的命令核心转储文件没有生成分段错误
ulimit -c unlimited
的核心文件要在下次运行时产生的。
为什么不自动生成核心转储文件,为什么我必须每次运行ulimit
命令才能在下一次运行程序时生成核心文件?
我使用的操作系统是Ubuntu 10.10。
答
您需要将命令
ulimit -c unlimited
在您的环境设置
。
如果你使用bash作为你的shell,你需要放置上面的命令的〜/ .bashrc
答
这是因为默认情况下,您的分配将核心文件大小限制为0个块。您提到的ulimit
命令将该限制增加到无穷大。
我不知道Ubuntu,但大多数发行版都有一个文件/ etc/limits,限制了系统的默认值。
答
你可能也想尝试编辑而不是添加到ulimit -c unlimited
~/.bashrc
/etc/security/limits.conf
文件。
limits.conf
是在大多数Linux发行版中指定核心转储详细信息的“正确”位置。
答
分段错误是由于路径变量的值无关。在我的系统上,用户是[email protected]
,添加的内容如下。
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(非常重要)。