在Linux上创build核心转储

重复:

在linux中生成一个核心转储

我正在尝试在“Fedora Core 3(海德堡)”中创build一个核心转储。

[root @ testserver test_core_dump]#uname -a

Linux testserver 2.6.12-1.1381_FC3#1星期五10月21日03:46:55 EDT 2005 i686 Athlon i386 GNU / Linux

我正在关注这个来创build核心转储。

问题是,/ proc / sys / kernel / suid_dumpable在这个版本中不存在。 我也在这里检查/ proc / sys / fs / suid_dumpable,但suid_dumpable不存在。

1)有没有解决这个问题? 2)我在这里错过了什么?

您所遵循的说明仅仅是为了超越可能阻止您获得核心转储的操作系统限制。

核心转储的生成是一个微不足道的过程,您可以按如下方式向进程发送信号

kill -ABRT pid_of_process 

有很多事情可能会阻止这种情况发生,但是您应该先尝试一下,看看它是否会在当前目录中生成核心转储。 如果程序是交互式的,不会陷入退出信号,那么你可以通过向进程发送SIGQUIT来引起内核转储,这通常绑定到CTRL- \

在引用的文档中遇到问题的区域指的是如果进程没有在这两种模式中运行,则运行setuid / setguid的进程,那么您可以安全地忽略该步骤。 (你可以通过查看程序的文件权限来查看进程是否正在运行setuid / setguid,并检查setuid和setguid位,这可以通过发出一个ls -l命令并在第四个位置(setuid)寻找s来完成。或第七个位置(setgid)(下面的setuid的例子)

-r-sr-xr-x 1 root wheel 57616 28 Oct 03:28 /usr/bin/login

你有没有尝试生成一个核心,而不使用不工作的步骤,它的工作?

您将需要能够在正在运行进程的目录中写入数据,或者如果不是当前目录,则需要为核心转储定义的目录。 以root身份运行可能会解决权限问题。

我不知道我明白你想要什么。 你参考的网页谈到了ENABLING核心转储,而不是触发它们。 不要担心缺少的sysctl – 我的Linux系统也没有它,我可以愉快地转储核心周围:)你想创建一个特定的进程核心转储?

除了SIGABRT,你也可以尝试使用gcore

名称 gcore – 为正在运行的进程生成核心文件

提要 gcore [-o filename] pid

描述 gcore为其进程ID pid指定的进程生成一个核心文件。 默认情况下,核心文件被写入到当前目录下的core.pid。

这是这个问题的重复。 被接受的答案和得票最多的 答案是:

在Bash:

 ulimit -c unlimited 

并在tcsh:

 limit coredumpsize unlimited 

在这种情况下,如果一个程序崩溃,核心转储将被创建在运行该程序的一个名为core的文件中。