Как я могу определить программу, которая вызвала свалку ядра?

Я нахожусь в Mac OS X 10.10.

Я замечаю, что мой жесткий диск заполняется, потому что каждые несколько минут появляется новый файл дампа ядра в /cores core:

$ ls -alhtr /cores
total 3551488
[email protected]  1 saqib  admin   6.0K Apr 24 12:38 .DS_Store
drwxr-xr-x  32 root   admin   1.1K Aug  1 17:00 ../
-r--------   1 saqib  admin   578M Aug  1 22:36 core.35049
-r--------   1 saqib  admin   578M Aug  1 22:37 core.35202
[email protected]  6 root   admin   204B Aug  1 22:38 ./
-r--------   1 saqib  admin   578M Aug  1 22:38 core.35438

Но я не знаю, какие процессы создают эти основные файлы. Цифры в именах файлов должны представлять PID для процессов, которые их создали. Но, конечно, эти процессы теперь мертвы. Итак, как я могу определить, какой процесс создает эти ядра, чтобы я мог его исправить/удалить?

ИЗМЕНИТЬ 1

Выполнение gdb -c в основном файле не дает мне необходимой информации:

$ gdb -c /cores/core.35438
GNU gdb (GDB) 7.8.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin14.0.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
"/cores/core.35438": no core file handler recognizes format
(gdb)

EDIT 2

file тоже не работает:

$ file /cores/core.35049
/cores/core.35049: Mach-O core i386

ИЗМЕНИТЬ 3

Я открыл основной файл с помощью приложения MachOView. Вы можете увидеть скриншот того, что он показал мне. Я все еще не мог понять, какое приложение создало этот основной файл.

enter image description here

Ответы

Ответ 1

Запустите консольную утилиту, найденную в разделе "Приложения/Утилиты". Посмотрите в разделе ДИАГНОСТИКА И ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИИ для отчетов по диагностике пользователей и системных диагностических отчетов. Должна быть запись для каждого недавнего сбоя, с указанием имени программы, даты, времени и имени хоста. Вы можете щелкнуть по каждому из них для получения дополнительной информации.

Вы также можете просто получить доступ к диагностическим отчетам непосредственно в файловой системе. Отчеты диагностики пользователя находятся в файлах ~/Library/Logs/DiagnosticReports/и системных диагностических отчетов в /Library/Logs/DiagnosticReports/.

Ответ 2

Если в системе установлен gdb, вы можете использовать gdb -c..:

gdb -c core.35049

Вы получите результат следующим образом:

GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
[New LWP 2905]
Core was generated by './a.out'.
Program terminated with signal SIGSEGV, Segmentation fault.

Прочитав это, вы увидите, что ядро было создано программой a.out.

ОБНОВИТЬ

Используя file, вы также можете получить аналогичную информацию:

$ file core
core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './a.out'

Ответ 3

Мне просто нужно было сделать это на OS X 10.13, и для меня работала команда image list в lldb.

lldb -c /cores/core.45943
(lldb) target create "/cores/core.45943"
Core file '/cores/core.45943' (i386) was loaded
(lldb) image list