我需要为SIGABRT,SIGBUS,etc等终止的进程启用核心转储文件创建。
在以前版本的MAC OS X(包括ElCapitan)中,我将为所有进程启用Code Dumps文件:
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。
答案 0 :(得分:0)
我刚刚使用Xcode 9尝试了ulimit -c unlimited
,然后执行了一些肯定会得到段错误的东西,并且宾果游戏获得了一个用/core/
编写的coredump。
即,我试过
#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,信不信由你。