Як переглянути файл CoreDump?


13

Під час повідомлення про помилку від аварії помилка стає приватною та файл під назвою CoreDump.gz. Документація про помилку Triage говорить про наступне:

Якщо до збоїв все ще є вкладення CoreDump.gz, тоді не вдалося автоматично отримати повністю символічний слід стека та перевірити наявність дублікатів.

Stacktrace.txt здається читабельним людині. Як я можу зрозуміти значення сліду стека. CoreDump за допомогою CoreDump.gz не здається читабельним для людини. Що таке "повністю символічний слід стека"? Яка різниця між "повністю символічним слідом стека" Як я переглядаю вміст файлу CoreDump? (спробував "кішка", але це не чисто)

Відповіді:


15

Coredump.gz - це (стисла) пам’ять, доступна програмою, яка зазнала аварії. Це двійковий файл. Коредуми - це скарбниця, яка має видобувати всілякі приватні дані.

Коредуми можна переглянути, натиснувши "gdb":

gdb --core=mycoredump

Звичайно, вам все одно знадобляться пакети налагодження, пов'язані з цим ядром.

Ви можете, таким чином, генерувати стеження за допомогою:

(gdb) bt

генерувати стеження поточного потоку - без роздільної здатності параметрів - або

(gdb) thread apply all bt full

для генерації стеження всіх потоків у кореподачі з роздільною здатністю параметра.

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

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

Зворотні треки зазвичай корисні лише в тому випадку, якщо встановлені пакети налагодження (щоб кадри стека можна було вирішити на щось, що ми можемо легко прочитати). Для аналізу стек-треків потрібно мати джерела, які використовувались для створення цього конкретного екземпляра програми.


CoreDump - це двійковий файл, але як його переглянути? Складові сліди корисні лише в тому випадку, якщо встановлені пакети налагодження, то чому аппарат повідомляє про це інакше?
обчислює

1
Файл CoreDump не призначений для перегляду, він повинен використовуватися для налагодження в gdb. Потрібно мати машину з такою ж версією програмного забезпечення (і всіх залежностей), що генерує збій і має пакунки для налагодження, тоді ви можете використовувати те, що Carlos розмістив вище, щоб отримати слід стека.
stgraber

2
Тепер щодо того, чому це все ще актуально для apport, це тому, що apport має купу "ретрансляторів", які захоплюють ваш coredump, встановлюють пакети налагодження на коробці в DC і потім додають повний стектракт до звіту про помилки.
stgraber

Додаткова документація: gnu.org/software/gdb/documentation
обчислюється

Додаткова документація: unknownroad.com/rtfm/gdbtut/gdbtoc.html
обчислюється
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.