Найдите, какая программа вызвала файл дампа ядра

19

Недавно я интенсивно тестировал программу / пакет, поэтому не могу точно сказать, какая из недавно установленных программ (или старых программ) вызвала появление файла core в моей домашней папке. Это сервер, поэтому лучше узнать возможные источники нестабильности на машине.

    
задан Desmond Hume 09.11.2012 в 14:23
источник
  • На FreeBSD это работа для меня, dmesg | tail -n 20 –  SIFE 09.11.2012 в 14:33
  • @SIFE, который, безусловно, работает, если это произошло совсем недавно. –  Benj 09.11.2012 в 14:35
  • @Benj Я забыл это сказать. –  SIFE 09.11.2012 в 14:36

3 ответа

31

Вы можете просто использовать программу file для их идентификации:

например

# file /var/core/core
/var/core/core:     ELF 64-bit MSB core file SPARCV9 Version 1, from 'crs_stat.bin'
    
ответ дан Benj 09.11.2012 в 14:25
  • Иногда у меня были файлы ядра, которые по какой-либо причине «файл» не может идентифицировать - в тех случаях может помочь тот факт, что последняя строка вывода строк в файле core часто содержит путь к исполняемому файлу. например «Строки / путь / в / corefile» хвост -n 1 »часто работают или смотрят на последние несколько строк. –  jsegal 20.12.2012 в 22:29
  • @jsegal: Хорошая находка, но мне нужны строки ядра | grep ^ / | tail -1, когда find сказал мне: слишком много заголовков программ. –  Tino 23.10.2015 в 13:41
1

Часто с помощью файловой программы в основном файле отображается исполняемый файл errant, как объяснил @Benj в принятом ответе (код из ответа Бенья):

# file /var/core/core
/var/core/core:     ELF 64-bit MSB core file SPARCV9 Version 1, from 'crs_stat.bin'

Однако иногда вы можете получить жалобу на «слишком много заголовков программ»:

core.some-lib.nnnn.nnnn: ELF 64-bit LSB  core file x86-64, version 1 (SYSV), too many program header sections (1850)

В этом случае вы можете попробовать несколько альтернатив:

  • Хвост последних нескольких строк основного файла (для приложения было около 25 для меня): strings core.some-lib.nnnn.nnnn | tail -50
  • Использовать сам gdb: gdb -c core.some-lib.nnnn.nnnn Это часто говорит вам что-то вроде этого: Core was generated by '/usr/local/bin/some-executable'
ответ дан rholmes 23.02.2018 в 23:11
0

вы можете перейти в каталог, в котором находится core.pid, и запустить gdb core core.pid

    
ответ дан SuperChekkan 08.02.2018 в 13:49