无法更改核心转储文件的文件名

时间:2015-04-21 07:04:37

标签: c linux gdb core coredump

我做了以下更改:

  1. 编辑文件/etc/security/limits.conf,以便核心文件大小为“无限制”。使用显示为“无限制”的命令#ulimit -c对其进行验证。

  2. 根据以下内容附加文件/etc/sysctl.conf
    kernel.core_uses_pid = 1
    kernel.core_pattern = /tmp/%e.core.%p
    fs.suid_dumpable = 2
    使用sysctl -p

  3. 保存更改
  4. 编译文件如下:
    $gcc -g pointer.c -o pointeraccess
    结果成功编译

  5. 按如下方式在GDB中执行文件:
    $gdb pointeraccess

  6. 获得算术异常后,输出如下:

      

    (gdb)运行

         

    启动程序:/ media / anand / d258641a-8cc6-4fcf-96e4 -

         

    ce7a147cb34e /重要/调试工作区/ pointeraccess

         

    编程接收信号SIGFPE,算术异常。

         在pointeraccess.c的主要()中的

    0x08048477:13

         

    13 i = i / 0;

         

    (gdb)gcore

         

    保存的corefile core.1880

    我的问题是:为什么文件名是core.pid而不是program_name.core.pid

1 个答案:

答案 0 :(得分:1)

更新核心模式:

echo "core.%e.%p" > /proc/sys/kernel/core_pattern

%e表示二进制文件的名称

使用上面的模式,我能够拥有包含可执行文件名和pid的核心转储。

编辑:

在GDB之外运行会导致核心文件中的文件名。使用GDB运行它,我想gcore会控制它。