2015-07-02 2 views
1

В настоящее время я пытаюсь запустить QEMU-системы вооружиться для ARMv7 архитектуры, сделать некоторые начальные настройки для подкачки, а затем включить MMU.Qemu: отслеживать операции MMU

Я запускаю qemu с заглушкой gdb и подключаюсь к нему, затем с gdb.

я должен накуролесил что-то с таблицей перевода/регистрами/и т.д., вещь минуты я установил MMU включить бит в регистре управления, GDB не может больше получать данные из памяти:. После п команды, которая выполняет команду mmu-enable, она не получает следующую команду, и я не могу получить доступ к памяти.

Есть ли способ посмотреть, что происходит внутри MMU Qemu? Где он принимает таблицы перевода, какие рассчитывает и т.д.

Или мне нужно просто перекомпилировать его с моим дополнительным отладочным выходом?

+0

Адрес таблицы переводов хранится в регистрах ttrb0/1. Что такое mmu делать с этими таблицами, объясняется в справочном руководстве armv7. –

+0

@AlexHoppus. Я не мог согласиться больше, но я хотел бы проверить мои дескрипторы, и здесь будет полезен отладочный вывод. В любом случае, я уже отсортировал источники qemu и добавил свои собственные журналы ... – olegst

ответ

1

Нет, отслеживать это невозможно, не изменяя сами источники QEMU, чтобы добавить вывод отладки. Это конкретный случай более общей тенденции, которая заключается в том, что дизайн и подход QEMU в значительной степени «быстро запускают правильный код», а не обеспечивают детальную интроспекцию поведения возможных гостей. Иногда, как и в этом случае, есть удобное место для добавления собственной отладочной печати; иногда, как и в довольно распространенном желании распечатать все обращения к памяти, сделанные гостем, в коде C нигде нет, где можно отслеживать трассировку, чтобы поймать все обращения.

0

Нет, нет никакого способа отследить это без изменения источников в Qemu в себя

Так я и сделал. Для ARM архитектуры, соответствующий код находится в мишени руки/helper.c - get_phys_addr * функций.

0

Когда я использовал QEMU для отладки VM-проблем в ядре операционной системы, которое я создал с коллегой, я закончил подключение GDB вместо отладки QEMU вместо того, чтобы отлаживать гостевой процесс внутри QEMU.

Вы можете разместить контрольные точки на функции ходьбы в таблице MMU и пройти через нее.

Смежные вопросы