4

复制:

在linux中生成核心转储

我正在尝试在我的“Fedora Core release 3 (Heidelberg)”中创建一个核心转储。

[root@testserver test_core_dump]# uname -a

Linux 测试服务器 2.6.12-1.1381_FC3 #1 Fri Oct 21 03:46:55 EDT 2005 i686 athlon i386 GNU/Linux

我正在按照这个来创建核心转储。

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

1)有什么解决方法吗?2)我在这里错过了什么吗?

4

3 回答 3

11

您遵循的说明只是为了覆盖可能会阻止您获得核心转储的 o/s 限制。

核心转储的生成是一个微不足道的过程,您向该过程发送信号如下

kill -ABRT pid_of_process

然而,有很多事情可能会阻止这种情况发生,但是您应该先尝试一下,看看它是否会在您的当前目录中产生核心转储。如果程序是交互式的并且没有捕获退出信号,那么您可以通过向进程发送 SIGQUIT 来导致核心转储,这通常绑定到 CTRL-\

您在参考文档中遇到问题的区域是指运行 setuid/setguid 的进程,如果您的进程未在其中任何一种模式下运行,那么您可以放心地忽略该步骤。(您可以通过查看程序的文件权限并检查 setuid 和 setguid 位来判断进程是否正在运行 setuid/setguid,这可以通过发出 ls -l 命令并在第 4 位(setuid)中查找 s 来完成或第 7 位 (setgid)(下面的 setuid 示例)

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

您是否尝试过在不使用不起作用的步骤的情况下生成核心并且它是否有效?

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

于 2009-03-25T08:24:59.003 回答
6

我不确定我明白你想要什么。您引用的网页谈论启用核心转储,而不是触发它们。不用担心缺少 sysctl——我的 Linux 系统也没有它,我可以愉快地转储核心 :) 你想为特定进程创建核心转储吗?

除了 SIGABRT,您还可以尝试使用gcore

NAME gcore - 为正在运行的进程生成核心文件

概要 gcore [-o 文件名] pid

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

于 2009-03-25T09:25:24.290 回答
1

这是这个问题的副本。接受的答案得票最多的答案建议如下:

在 Bash 中:

ulimit -c unlimited

在 tcsh 中:

limit coredumpsize unlimited

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

于 2009-03-25T09:54:36.857 回答