为了账号安全,请及时绑定邮箱和手机立即绑定

请问何在Linux中生成分段错误的核心转储?

请问何在Linux中生成分段错误的核心转储?

一只名叫tom的猫 2019-08-02 12:02:28
如何在Linux中生成分段错误的核心转储?我在Linux中有一个进程有一个分割错误。当核心转储失败时,我如何告诉它生成核心转储?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

这取决于您正在使用的shell。如果您正在使用bash,那么uLimited命令控制与程序执行有关的几个设置,例如是否应该转储核心。如果你打字

ulimit -c unlimited

然后,这将告诉bash,它的程序可以转储任何大小的核心。您可以指定一个大小,如52m,而不是无限,如果你想,但在实践中,这不应该是必要的,因为核心文件的大小可能永远不会是你的问题。

在tcsh中,您可以键入

limit coredumpsize unlimited




查看完整回答
反对 回复 2019-08-03
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

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

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

gcore <pid>

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

kill -ABRT <pid>

不要使用杀害-SEGV,因为这通常会调用信号处理程序,从而使诊断卡住过程更加困难。



查看完整回答
反对 回复 2019-08-03
?
森林海

TA贡献2011条经验 获得超2个赞

若要检查在何处生成核心转储,请运行:

sysctl kernel.core_pattern

或:

cat /proc/sys/kernel/core_pattern

哪里%e是进程名和%t系统时间。你可以在/etc/sysctl.conf重装sysctl -p.

如果没有生成核心文件(通过以下方法进行测试):sleep 10 &killall -SIGSEGV sleep),通过以下方式检查限制:ulimit -a.

如果您的核心文件大小有限,请运行:

ulimit -c unlimited

让它不受限制。

然后再次测试,如果核心转储成功,您将在分段错误指示之后看到“(核心转储)”,如下所示:

分割故障:11(核倾弃)

另见:内核转储-但是核心文件不在当前目录中?


乌本图

在Ubuntu中,核心转储由apport并且可以定位在/var/crash/..但是,在稳定版本中,默认情况下会禁用它。

欲知更多详情,请参阅:我在哪里找到Ubuntu的核心转储?.

MacOS

关于MacOS,见:如何在MacOSX中生成核心转储?



查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 661 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信