Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 无法为崩溃的程序创建核心文件_Linux_File_Gdb_Coredump - Fatal编程技术网

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

Linux 无法为崩溃的程序创建核心文件,linux,file,gdb,coredump,Linux,File,Gdb,Coredump,我正在使用Ubuntu12.04LTS。我编写了一个简单的程序来创建崩溃 // null.c #include<stdio.h> int main() { int *p = NULL; int k=*p; printf("%d",sizeof(0)); return 0; } 现在我想看看使用gdb的核心转储文件。我做了以下几件事 我检查了当前目录,没有核心转储文件 我试图用内容“core.%e.%p”更改/proc/sys/kernel/core_模式。

我正在使用Ubuntu12.04LTS。我编写了一个简单的程序来创建崩溃

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

int main()
{
   int *p = NULL;
   int k=*p;
   printf("%d",sizeof(0));
   return 0;
}
现在我想看看使用gdb的核心转储文件。我做了以下几件事

  • 我检查了当前目录,没有核心转储文件
  • 我试图用内容“core.%e.%p”更改/proc/sys/kernel/core_模式。但我无法写入该文件。它说的是“Fsync失败了”
  • 我使用了“sudo vi/proc/sys/kernel/core_模式”。仍然无法写入该文件

  • 我想在当前目录中创建核心转储。现在该怎么办?

    您需要使用以下命令调整核心转储大小限制:

    ulimit-S-c最大内核转储大小


    值以Kb为单位。

    您真正的问题似乎不是“我的核心转储在哪里”,而是“我如何修改
    /proc/sys/kernel/core\u模式”


    应该这样做。

    您不需要使用核心模式。它只是以那种格式转储%e.%p

    你需要做的是#ulimit-c unlimited

    并检查#ulimit-a


    并确认核心文件大小设置是否正确。在此之后,您将获得core作为core.pid。

    我的理解是,使用ulimit不是永久性的,即,如果重新启动,则限制返回到0。要拥有无限永久性,您需要更改/etc/security/limits.conf。同样,对于核心模式etc,更改/etc/sysctl.conf

    Segmentation fault (core dumped)
    
    sudo bash -c 'echo core.%e.%p > /proc/sys/kernel/core_pattern'