我在Linux中有一个进程,它有一个段错误。当核心转储失败时,我如何告诉它生成核心转储?
发布于 2017-12-27 03:51:15
这取决于您正在使用的shell。如果您正在使用bash,那么ulimited命令控制与程序执行有关的几个设置,例如是否应该转储核心。
如果你键入
ulimit -c unlimited
然后,这将告诉bash,它的程序可以转储任何大小的核心。您可以指定一个大小,如52M,而不是无限,如果你想,但在实践中,这应该不是必要的,因为核心文件的大小可能永远不会是问题。
在tcsh中,您可以键入
limit coredumpsize unlimited
发布于 2017-12-27 04:41:42
如前所述,这里提出的真正问题是如何在没有启用核心转储的系统上启用核心转储。这个问题在这里得到回答。
如果您来这里希望学习如何为挂起进程生成核心转储,答案是
gcore <pid>
如果gcore在您的系统中不可用,那么
kill -ABRT <pid>
不要使用kill-SEGV,因为这通常会调用信号处理程序,从而使诊断卡住过程变得更加困难。
发布于 2017-12-27 05:44:27
最后我所做的是在进程崩溃前将gdb附加到进程上,然后当它得到段错误时,我执行generate-core-file
命令。强迫生成核心垃圾场。
https://stackoverflow.com/questions/-100001305
复制相似问题