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

标签 coredump macos-sierra ulimit sysctl

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

最佳答案

我刚刚在 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 的同一终端 session 中执行 cc x.c (假设您已安装 Xcode 的命令行工具),然后是 ./a.out

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

关于coredump - 在 macOS Sierra 中为崩溃的进程启用核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39852691/

相关文章:

ruby-on-rails - rails g mongoid :config not working Rails 6. 1

linux - linux 如何统计一个用户打开的文件数

linux - 在退出 linux 时转储进程内存

c - 从映射文件中获取第 N 个字节

linux - 在 Linux 上的 gdb 中加载核心文件时,如何在库路径前添加一个目录

android - 我看不到使用 gdb 加载的 coredump 中的符号

linux - 如何配置 Hudson linux slave 来生成核心文件?

macos-sierra - MacOS Sierra 破坏了我的 git,哦不 - 适用于 Sierra、High Sierra 和 Mojave

macOS Sierra 禁止 Apache Localhost 403

socketexception - 打开的文件太多( ulimit 已更改)