Где найти дамп ядра в Ubuntu 16.04LTS?


14

У меня есть программа на C ++, которая делает то, что должна, но с указателем должна быть какая-то проблема, поскольку в конце она падает и создает дамп ядра. Моя проблема в том, что я не могу найти файл ядра, поэтому я не могу его отладить.

я пытался

ulimit -c unlimited
ulimit -a

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

Где я могу найти его?


Текущий каталог, или/var/crash
вальтинатор

4
Хотя в большинстве случаев это правда, @waltinator, иногда необходимо проверить /var/log/apport.log, потому что в современных версиях Ubuntu используется Apport, который может мешать дампу ядра неочевидным образом. См. Stackoverflow.com/a/18368068/1772379 для получения дополнительной информации.
Бен Джонсон

Ответы:


12

В Ubuntu дампы ядра обрабатываются Apport и могут быть расположены в /var/crash/. Но он по умолчанию отключен в стабильных выпусках.

Чтобы включить Apport, запустите: sudo systemctl enable apport.serviceили sudo service apport start.


Чтобы отключить, запустите: sudo systemctl disable apport.serviceили sudo service apport stopдля возврата к обычному методу дампинга ядра. Смотрите: Как включить или отключить Apport? ,

Чтобы навсегда отключить, отредактируйте /etc/apport/crashdb.confфайл и прокомментируйте следующую строку:

'problem_types': ['Bug', 'Package'],

добавив хеш-символ ( #) в начале строки.

Чтобы отключить отчеты о сбоях (вернуться к обычному режиму), удалите символ хеша (такой же, как был).


Вы также можете проверить core_pattern, как дампы ядра обрабатываются ядром:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c

Таким образом, даже основные файлы отключены ulimit, apportвсе равно будет зафиксировать сбой.

Смотрите также:


3

Для этих googlin ': (в моем случае - Ubuntu 16.04 и 18.04 и пользовательское приложение) /var/crashвсе еще пусто, поэтому быстрый способ обработки создания ядра (при условии, что вы, например, используете соответствующую встроенную настройку ulimit ) был

sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation

и

systemctl restart apport # to restore default apport settings
# which, by the way, were "|/usr/share/apport/apport %p %s %c %d %P" (without quotes)


Источники:


Просто, понятно, сработало.
Taekahn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.