我尝试获取coredump,所以我使用:

ulimit -c unlimited

我在后台运行程序,并杀死了它:
kill -SEGV %1

但是我得到:
[1]+  Exit 1                  ./Test

并且没有创建核心转储。
我对其他程序也做了同样的工作,但是它为什么不能全部使用?有人可以帮助我吗?

谢谢。 (GNU/Linux,Debian 2.6.26)

最佳答案

如果您的程序捕获SEGV信号并执行其他操作,则它将不会调用OS核心转储例程。检查它没有这样做。

在Linux下,出于安全原因,使用setuid,seteuid或其他一些参数更改其用户ID的进程将从转储核心中排除(请考虑:/bin/passwd在将/etc/shadow读入内存时转储核心)

您可以在更改UID之后通过调用prctl()在启用了更改其用户ID的Linux程序上重新启用转储核心

关于linux - 我没有获得所有过程的核心转储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2827520/

10-11 02:50
查看更多