Включить Core Dump для сбойного процесса в macOS Sierra

Мне нужно включить создание файла дампа ядра для процессов, которые завершаются с помощью SIGABRT,SIGBUS и т. Д.

В предыдущих версиях 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

Теперь этот способ не работает. На этом сайте рассказывается о новой команде gcore, но она работает для запуска процессов. Для KernelCoreDumps теперь вы должны включить официальную переменную NVRAM.

1 ответ

Я только что попробовал ulimit -c unlimited с Xcode 9, с последующим выполнением чего-то, что обязательно получит segfault, и, бинго, получил coredump, написанный на /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 был более 700 Мб, хотите верьте, хотите нет.

Другие вопросы по тегам