如何在 Linux 中在分段错误时生成核心转储?

新手上路,请多包涵

我在 Linux 中有一个进程出现分段错误。我如何告诉它在失败时生成核心转储?

原文由 Nathan Fellman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 614
2 个回答

这取决于您使用的外壳。如果您使用的是 bash,则 ulimit 命令控制与程序执行相关的几个设置,例如是否应该转储内核。如果你输入

ulimit -c unlimited

那么这将告诉 bash 它的程序可以转储任何大小的核心。如果需要,您可以指定一个大小,例如 52M 而不是无限制,但实际上这不是必需的,因为核心文件的大小可能永远不会成为您的问题。

在 tcsh 中,你可以输入

limit coredumpsize unlimited

原文由 Eli Courtwright 发布,翻译遵循 CC BY-SA 2.5 许可协议

如上所述,这里提出的真正问题是如何在未启用核心转储的系统上启用核心转储。这个问题在这里得到了回答。

如果您来到这里希望学习如何为挂起的进程生成核心转储,答案是

gcore <pid>

如果 gcore 在您的系统上不可用,那么

kill -ABRT <pid>

不要使用 kill -SEGV ,因为这通常会调用信号处理程序,从而更难诊断卡住的进程

原文由 George Co 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题