我正在尝试使用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
运行输出文件“test”,产生错误“Segmentation fault”。但它没有生成核心转储文件。
./test
我审核了this。谢谢你的帮助。
答案 0 :(得分:2)
生成核心转储文件并不总是启用它。尝试使用ulimit命令。
答案 1 :(得分:0)
某些系统默认配置为不写入核心文件,因为这些文件可能很大并且会迅速填满系统上的可用磁盘空间。在GNU Bash shell中,命令ulimit -c控制核心文件的最大大小。如果大小限制为零,则不会生成任何核心文件。可以通过键入以下命令来显示当前大小限制:
$ ulimit -c 0 如上所示,如果结果为零,则可以使用以下命令将其增加以允许写入任何大小的核心文件:(17)
$ ulimit -c无限制