在 macOS Sierra 中为崩溃的进程启用核心转储

Posted

技术标签:

【中文标题】在 macOS Sierra 中为崩溃的进程启用核心转储【英文标题】:Enable Core Dumps for crashed process in macOS Sierra 【发布时间】:2017-02-12 15:25:32 【问题描述】:

我需要为被 SIGABRT、SIGBUS 等终止的进程启用核心转储文件创建。

在以前版本的 MAC OS X(包括 ElCapitan)中,为我将要执行的所有进程启用代码转储文件:

sudo sysctl -w kern.corefile=/Users/tester/core.%U.%P.%N.dump
sudo sysctl -w kern.coredump=1
sudo launchctl limit core unlimited
sudo ulimit -c unlimited
launchctl limit core unlimited
ulimit -c unlimited

现在这种方式行不通了。 在this Site 中谈论新的 gcore 命令,但它适用于正在运行的进程。 对于 KernelCoreDumps,您现在必须启用 NVRAM 变量 official。

【问题讨论】:

【参考方案1】:

我刚刚在 Xcode 9 中尝试了ulimit -c unlimited,然后执行了一些肯定会导致段错误的操作,并且宾果游戏得到了一个用/core/ 编写的核心转储。 也就是说,我试过了

#include <stdio.h>
int main()

int a[2];
printf("\n hi\n");
a[20000]=10;
return 0;

将其保存到一个文件中,比如x.c,然后在您执行上述ulimit 的同一终端会话中执行cc x.c(假设您安装了Xcode 的命令行工具),然后是./a.out

coredump 的大小超过 700Mb,信不信由你。

【讨论】:

以上是关于在 macOS Sierra 中为崩溃的进程启用核心转储的主要内容,如果未能解决你的问题,请参考以下文章

U盘制作macOS Sierra的启动盘

macOS Sierra 系统下 fs_usage 是啥进程?关闭后对系统是不是有影响

macos high sierra怎么安装

如何制作macos sierra

如何制作macos sierra安装u盘

macOS Sierra是啥 macOS Sierra有啥新功能