首页 文章

分段故障时未生成核心转储文件

提问于
浏览
17

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

ulimit -c unlimited

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

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

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

4 回答

  • 1

    您需要放置命令

    ulimit -c unlimited
    

    在您的环境设置中 .

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

  • 18

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

    limits.conf 是"correct"在大多数Linux发行版中指定核心转储详细信息的位置 .

  • 15

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

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

  • 9

    分段错误是由于路径变量的无关值造成的 . 在我的系统上,用户是 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(非常重要) .

相关问题