gdb - отладка ядра с помощью файла дампа физической памяти

У меня есть файл дампа физической памяти и файл символов (vmlinux), и я хотел бы проанализировать содержимое файла дампа с файлом символов в gdb. Например, чтобы посмотреть состояние init_task в то время, физическая память выгружалась:

(gdb) print &init_task
=> show the address of init_task in physical memory dump file, said 0xc0XXXXXX

(gdb) print ((struct task_struct *) 0xc0XXXXXX)->tasks
=> show the content of init_task.tasks in physical memory dump file)

Я только что попробовал команды GDB «восстановить» и «целевое ядро», обе не работают. «Восстановление» необходимо использовать в работающем процессе, а «целевому ядру» необходимо указать файл ядра (64-битный файл ядра LSB ELF) в качестве входных данных.

(gdb) restore binary physical-memory-dump-file
You can't do that without a process to debug.

(gdb) target core physical-memory-dump-file
"physical-memory-dump-file" is not a core dump: File format not recognized

Любая идея? Спасибо.

Update1: Привет, Паван, спасибо за напоминание; так как я работаю на специальной платформе, загрузчик на ней сохранит всю физическую память в файле дампа после перезагрузки ядра из panic / Oops. Таким образом, файл дампа физической памяти будет иметь тот же размер, что и физическая оперативная память, и его можно сопоставить с 0xc000: 0000 в ядре из первого его байта.


person h0li0    schedule 05.04.2012    source источник
comment
Как вы собрали свое physical-memory-dump-file изображение?   -  person Pavan Manjunath    schedule 05.04.2012


Ответы (1)


Дамп физической памяти и основной файл - это не одно и то же. Основной файл - это просто исполняемый образ, отображаемый в адресное пространство; когда ядро ​​паникует, оно должно оставить файл ELF в памяти в некоторой позиции с жестко закодированными адресами, указывающими на другие части изображения. Вероятно, вам придется извлечь образ ELF из имеющегося дампа памяти (удаляя неиспользуемые части), прежде чем GDB примет его и сопоставит символы, которые у вас есть.

person jmkeyes    schedule 06.04.2012
comment
Извлечение звучит так, что я потеряю некоторую информацию, как я узнаю, что неиспользуемые части действительно не используются? Но это приемлемо для преобразования файла дампа в формат дампа ядра. Есть ли какой-нибудь инструмент для этого? Я не нашел связанной функции в objcopy ... - person h0li0; 06.04.2012