无法更改核心转储文件的文件名
Unable to change the file name of core dump file
我做了以下修改:
编辑文件/etc/security/limits.conf
,使核心文件大小为'unlimited'。使用命令 #ulimit -c
验证它显示为 'unlimited'.
根据以下内容附加文件 /etc/sysctl.conf
:
kernel.core_uses_pid = 1
kernel.core_pattern = /tmp/%e.core.%p
fs.suid_dumpable = 2
使用 sysctl -p
保存更改
编译文件如下:
$gcc -g pointer.c -o pointeraccess
结果——编译成功
在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 控制了。
我做了以下修改:
编辑文件
/etc/security/limits.conf
,使核心文件大小为'unlimited'。使用命令#ulimit -c
验证它显示为 'unlimited'.根据以下内容附加文件
/etc/sysctl.conf
:
kernel.core_uses_pid = 1
kernel.core_pattern = /tmp/%e.core.%p
fs.suid_dumpable = 2
使用sysctl -p
保存更改
编译文件如下:
$gcc -g pointer.c -o pointeraccess
结果——编译成功在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 控制了。