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

Unable to change the file name of core dump file

我做了以下修改:

  1. 编辑文件/etc/security/limits.conf,使核心文件大小为'unlimited'。使用命令 #ulimit -c 验证它显示为 'unlimited'.

  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

得到算术异常后,输出如下:

(gdb) run

Starting program: /media/anand/d258641a-8cc6-4fcf-96e4-

ce7a147cb34e/Important/Debugging Workspace/pointeraccess

Program received signal SIGFPE, Arithmetic exception.

0x08048477 in main () at pointeraccess.c:13

13 i=i/0;

(gdb) gcore

Saved corefile core.1880

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

更新核心模式:

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

%e表示二进制的名称

通过上述模式,我能够转储包含可执行文件名称和 pid 的核心。

编辑:

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