У меня есть программа C++, которая делает то, что она, как предполагается, делает, но должна быть некоторая проблема с указателем, так как она отказывает в конце и создает дамп ядра. Моя проблема состоит в том, что я не могу найти базовый файл, таким образом, я не могу отладить его.
Я попробовал
ulimit -c unlimited
ulimit -a
и теперь размер файла установлен на неограниченный, но тем не менее я не могу найти ядро. Я попробовал в каждой папке, записанной здесь, но тем не менее кажется, что никакой базовый файл не создается.
Где я могу найти его?
В 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
все еще получит катастрофический отказ.
См. также:
Для тех, которые гуглят': (в моем случае - 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)