(Mac) 将核心文件留在可执行文件所在的位置,而不是 /cores?

Posted

技术标签:

【中文标题】(Mac) 将核心文件留在可执行文件所在的位置,而不是 /cores?【英文标题】:(Mac) leave core file where the executable is instead of /cores? 【发布时间】:2011-03-31 04:22:35 【问题描述】:

我最近发现 Mac 将所有核心文件都保留在 /cores 目录中。 如果可能的话,很难说出是什么应用程序导致了核心转储。

想知道我是否可以将系统配置为保留可执行文件所在的内核,就像在 Linux 中一样。

谢谢

【问题讨论】:

这可能属于 SuperUser.com 【参考方案1】:

嗯 - 也许您可以编辑 /etc/sysctl.conf 并帮助您自己指定 core_pattern?

kernel.core_pattern=/cores/core.%e.%p.%h.%t

也许这会帮助您了解更多关于哪个进程负责转储

【讨论】:

记录在哪里?我的sysctl.conf 中没有这样的东西,但sysctl(8) 实用程序显示了这个配置变量:kern.corefile = /cores/core.%P 实际上 - 在 os x 中是的,它是 corefile。您可以尝试类似: sudo sysctl -w kern.corefile="%N-%P-%U.core"【参考方案2】:

您可以使用 sysctl 命令来编辑 corefile 路径

sudo sysctl -w kern.corefile=/this/is/new/path

默认kern.corefile=/cores/core.%P%P指的是进程ID。可以替换为%N => 进程名,%U => 用户名。可以查看源码here

如果要禁用核心转储,请使用以下命令

sudo sysctl -w kern.coredump=0

或编辑/etc/sysctl.conf,添加这一行

kern.coredump=0

【讨论】:

以上是关于(Mac) 将核心文件留在可执行文件所在的位置,而不是 /cores?的主要内容,如果未能解决你的问题,请参考以下文章

Mac 命令行中添加命令直接调用可执行文件

mac

Mac Catalina 核心文件位置

如何将dll文件放在其他目录下而不是exe所在

mac终端命令大全介绍

Mac-terminal常用命令