Как просмотреть файл CoreDump?

13

При сообщении об ошибке из-за сбоя ошибка становится закрытой и файл называется CoreDump.gz. В документации по ошибкам сортировки говорится следующее:

Если сбой все еще имеет вложение CoreDump.gz, то было невозможно автоматически получить полностью символическую трассировку стека и проверить наличие дубликатов.

Stacktrace.txt кажется читаемым человеком. Как я могу понять значение трассировки стека. CoreDump без CoreDump.gz не кажется читаемым человеком. Что такое «полностью символическая трассировка стека»? В чем разница между «полностью символической трассировкой стека»? Как просмотреть содержимое файла CoreDump? (попробовал "кошку", но она не чистая)

komputes
источник

Ответы:

15

Coredump.gz - это (сжатая) память, доступная сбойной программе. Это бинарный файл. Coredumps - сокровищница, где можно добывать все виды личных данных.

Coredumps можно просмотреть, запустив 'gdb':

gdb --core=mycoredump

Конечно, вам все еще понадобятся пакеты отладки, связанные с этим ядром.

Затем вы можете сгенерировать трассировку стека:

(gdb) bt

создать трассировку стека текущего потока - без разрешения параметров - или

(gdb) thread apply all bt full

генерировать трассировку стека всех потоков в coredump с разрешением параметров.

stacktrace и full stacktraces показывают поток управления в программе. Для Python верхняя часть трассировки стека показывает самый старый вызов, а самый последний - внизу; почти во всем остальном верх - самый последний звонок, а низ - самый старый.

Полная трассировка стека покажет не только поток, но и значения параметра. Здесь мы обычно находим личные данные - например, скажем, вы видите функцию с именем validatePassword с параметром с именем Password и значением MySecretPassword ...

Stacktraces обычно полезны только в том случае, если установлены пакеты отладки (чтобы фреймы стека можно было преобразовать во что-то, что мы легко читаем). Анализ трассировки стека потребует наличия источников, которые использовались для создания этого конкретного экземпляра программы.

hggdh
источник
CoreDump - это двоичный файл, но как его просмотреть? Stacktraces полезны, только если установлены отладочные пакеты, тогда почему apport сообщает об этом иначе?
komputes
1
Файл CoreDump не предназначен для просмотра, он предназначен для отладки в gdb. У вас должна быть машина, на которой запущена та же версия программного обеспечения (и все зависимости), генерирующая сбой и имеющая пакеты отладки, тогда вы можете использовать то, что Карлос опубликовал выше, чтобы получить трассировку стека.
stgraber
2
Теперь о том, почему он по-прежнему актуален для apport, потому что в apport есть куча «ретрейсеров», которые захватывают ваш coredump, устанавливают пакеты отладки на блок в DC, а затем присоединяют полный сборку стека к отчету об ошибках.
stgraber
Дополнительная документация: gnu.org/software/gdb/documentation
komputes
Дополнительная документация: unknownroad.com/rtfm/gdbtut/gdbtoc.html
komputes