我用kill(pid, SIGABRT)
编写了一个示例程序,但接收SIGABRT
的进程没有创建
任何核心转储。如何通过发送SIGABRT
信号来获取核心转储文件?
答案 0 :(得分:7)
是使用
将核心转储文件限制设置为无限制ulimit -c unlimited
并检查核心转储生成的路径,通常核心转储是在进程的当前目录中生成的,但是通过在/proc/sys/kernel/core_pattern
中给出路径,您可以更改核心生成的路径和名称,类似于以下
echo /var/log/mycore > /proc/sys/kernel/core_pattern
现在核心将生成为/var/log/mycore.pid
。
还请参考man核心,如果你还没有看到核心那么发送给我们下面命令的输出
cat /proc/sys/kernel/core_pattern
您还可以查看http://yusufonlinux.blogspot.com/2010/11/debugging-core-using-gdb.html
答案 1 :(得分:6)
在运行要中止的进程之前,您需要将核心转储ulimit
设置为高于零的值:
ulimit -c unlimited