Анализ файла дампа ядра

Что мне нужно проверить во время анализа файла дампа ядра? Пожалуйста, скажите мне с нуля.

Ответ 1

Вам просто нужен двоичный файл (с включенными отладочными символами), который идентичен тому, который сгенерировал ядро. Затем вы можете запустить gdb path/to/the/binary path/to/the/core для его отладки.

Когда он запустится, вы можете использовать bt (для backtrace), чтобы получить трассировку стека с момента сбоя. В backtrace каждому вызову функции присваивается номер. Вы можете использовать frame number (заменяя число на соответствующее число в трассировке стека), чтобы выбрать конкретный стек стека. Затем вы можете использовать list для просмотра кода вокруг этой функции и info locals, чтобы увидеть локальные переменные. Вы также можете использовать print name_of_variable (заменяя "name_of_variable" на имя переменной), чтобы увидеть его значение.

Ввод help внутри GDB даст вам подсказку, которая позволит вам видеть дополнительные команды.

Ответ 2

Шаги для отладки coredump с использованием GDB:

Некоторая общая помощь:

GDB запустить GDB, без отладочных файлов

Программа GDB начинает программу отладки

Отладка ядра программы GDB Coredump ядро, созданное программой

GDB --help описывает параметры командной строки

1- Прежде всего найдите каталог, в котором генерируется основной файл.

2- Затем используйте ls -ltr в каталоге, чтобы найти последний сгенерированный ls -ltr.

3- Для загрузки файла corefile используйте

двоичный путь GDB в corefile

Это загрузит основной файл.

4- Затем вы можете получить информацию, используя команду bt. Для подробного возврата используйте bt full.

5- Для печати переменных используйте print variable-name или p variable-name

6- Чтобы получить какую-либо помощь по GDB, используйте опцию help или воспользуйтесь apropos search-topic

7- Используйте номер frame frame-number чтобы перейти к нужному номеру кадра.

8- Используйте команды up n и down n для выбора кадра n кадров вверх и соответственно для кадра n кадров вниз.

9- Чтобы остановить GDB, используйте quit или q.