【问题标题】:Enable Core Dumps for crashed process in macOS Sierra在 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

【问题讨论】:

    标签: coredump macos-sierra ulimit sysctl


    【解决方案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,信不信由你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      相关资源
      最近更新 更多