Что мне нужно проверить во время анализа файла дампа ядра? Пожалуйста, скажите мне с нуля.
Анализ файла дампа ядра
Ответ 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
.