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

问题描述 投票:0回答:2

我需要为由 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

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

coredump macos-sierra ulimit sysctl
2个回答
0
投票

我刚刚尝试使用 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

无论您相信与否,核心转储的大小超过 700Mb。


0
投票

你能引导新手编码员完成这个吗?由于我也经常丢失东西,所以我在聊天框中输入内容。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.