我需要为由 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。
我刚刚尝试使用 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。
你能引导新手编码员完成这个吗?由于我也经常丢失东西,所以我在聊天框中输入内容。谢谢。