我写了一个示例程序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