Включить 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 Мб, хотите верьте, хотите нет.