生成子进程的核心转储文件

Posted

技术标签:

【中文标题】生成子进程的核心转储文件【英文标题】:Generating a Core Dump File of a child process 【发布时间】:2010-03-03 11:10:18 【问题描述】:

我正在尝试使用 exec() 从我的 php 脚本运行 gpg。但它与分段错误相冲突: “gpg:分段错误被捕获......退出” 它在子进程中崩溃,所以我的 php 脚本可以正常工作。为了确定一个问题,我想要一个核心文件。 我试着跑了

ulimit -c unlimited
echo 1 > /proc/sys/fs/suid_dumpable

我在 /etc/security/limits.conf 中添加了“* soft core unlimited”,但没有创建任何核心文件。

我会非常感谢任何建议或想法。

【问题讨论】:

【参考方案1】:

从输出消息来看,gpg 似乎捕获了异常(这是真的吗?)。

如果适用,您可以尝试gcore 命令。否则,如果源代码可用(我假设它是可用的,因为您正在调试它),您可以使用例如 google-coredumper。不确定这对您是否足够。

【讨论】:

我有资源,但我不明白 google-coredumper 可以如何帮助我。它能够在代码中的某个位置转储,但我不知道它崩溃的某个位置。 @sfoid 另一种选择是尝试使用 valgrind 运行它,这可能会指出错误。看起来是个棘手的问题。【参考方案2】:

您可能会开始认为您的问题可能是 gpg 捕获了一些异常或 PERMISSION 问题。 先检查一下。

希望有帮助

【讨论】:

以上是关于生成子进程的核心转储文件的主要内容,如果未能解决你的问题,请参考以下文章

获取“分段错误核心转储”

从附加到 ddd/dbx 的崩溃进程生成核心转储

对于子进程生成过程的理解

“错误生成子进程:没有这样的文件或目录”Xcode

即使进程正常运行,如何创建核心转储? [复制]

来自垂死的多线程进程的核心转储