SIGABRT如何获取coredump文件?

use*_*542 6 linux

我写了一个示例程序kill(pid, SIGABRT),但接收的进程SIGABRT不会创建任何核心转储.如何通过发送SIGABRT信号获取核心转储文件?

小智 7

是使用,将核心转储文件限制设置为无限制

ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)

并且还检查核心转储生成的路径,通常核心转储是在进程的当前目录中生成的,但是通过给出路径/proc/sys/kernel/core_pattern可以更改核心生成的路径和名称,如下所示

echo /var/log/mycore >  /proc/sys/kernel/core_pattern
Run Code Online (Sandbox Code Playgroud)

现在核心将生成为/var/log/mycore.pid.

还请参考man核心,如果你还没有看到核心,那么发送给我们下面命令的输出

cat /proc/sys/kernel/core_pattern
Run Code Online (Sandbox Code Playgroud)

您还可以查看http://yusufonlinux.blogspot.com/2010/11/debugging-core-using-gdb.html


caf*_*caf 6

运行要中止的进程之前,需要将核心转储设置为ulimit大于零的值:

ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)