无法为崩溃的程序创建核心文件

Sur*_*dhi 8 linux gdb coredump file

我使用的是Ubuntu 12.04 LTS.我写了一个简单的程序如下来创建崩溃

// null.c
#include<stdio.h>

int main()
{
   int *p = NULL;
   int k=*p;
   printf("%d",sizeof(0));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我使用"gcc -g null.c"然后"./a.out"运行,输出正如预期的那样.

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

现在我想使用gdb查看核心转储文件.我做了以下事情

  1. 我检查了当前目录,没有核心转储文件
  2. 我尝试用内容"core.%e.%p"更改/ proc/sys/kernel/core_pattern.但我无法写入文件.它说"Fsync失败".
  3. 我使用了"sudo vi/proc/sys/kernel/core_pattern".仍然无法写入文件.

我想在当前目录中创建核心转储.现在做什么?

Emp*_*ian 23

你真正的问题似乎不是"我的核心转储在哪里",而是"如何修改/proc/sys/kernel/core_pattern".

sudo bash -c 'echo core.%e.%p > /proc/sys/kernel/core_pattern'
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.