在Linux中如何生成核心转储文件?

3
我正在尝试在Linux中使用以下程序生成核心转储文件。
#include <stdio.h>
#include<iostream>
using namespace std;

int main()
{
     char *temp ="ABCDE";
     int i =0;
     temp[3] ='F';
     for (i =0; i <5; i++)
         printf("% Value is %c\n", temp[i]);

     cout<<"Done"<<endl;
     return 0;
}

我将上面的源代码保存为sample.cpp,并使用以下命令构建文件。

     g++ sample.cpp -g -o test

运行产生了"Segmentation fault"错误的输出文件"test",但它没有生成核心转储文件。
    ./test

我参考了this。谢谢你的帮助。

2个回答

5
生成核心转储文件并非总是启用的。请尝试使用 ulimit 命令。

感谢Raydel Miranda的帮助。 - Ullan

2
一些系统默认不会写入核心文件,因为这些文件可能很大,并且会迅速填满系统上可用的磁盘空间。在GNU Bash shell中,命令ulimit -c控制核心文件的最大大小。如果大小限制为零,则不会产生核心文件。可以通过输入以下命令来显示当前大小限制: $ ulimit -c 0
如上所示,如果结果为零,则可以使用以下命令将其增加,以允许编写任何大小的核心文件: $ ulimit -c unlimited

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接