Ответ 1
Вам не нужна целевая ОС для отладки кода, который работает внутри QEMU - QEMU уже делает это для вас.
В частности, QEMU поддерживает удаленную отладку из GDB - вы можете запускать QEMU с соответствующими параметрами командной строки и экспортировать интерфейс, к которому может подключиться копия GDB (работает на главной машине). В этот момент вы можете отлаживать программу в GDB почти так же, как если бы вы запускали ее на главной машине.
http://wiki.osdev.org/GDB, по-видимому, имеет немного более основную информацию; возможно, недостаточно, чтобы полностью начать работу, но, по крайней мере, дать вам основную идею и некоторые условия для поиска в документации QEMU и GDB. Пропустите бит о "Реализация GDB Stubs", который здесь не применяется, поскольку QEMU уже имеет его, и начните в разделе "Использование заглушек эмулятора". Краткая форма заключается в том, что вы запускаете QEMU с опцией -s
(экспортируете соединение GDB на localhost: 1234) и опцию -s
(дождитесь завершения команды GDB "продолжить" перед запуском), а затем в GDB on ваш хозяин говорит target remote :1234
вместо run
. Кроме того, конечно, вам нужно использовать ARM-версию GDB, а не native-x86.
(Кроме того, если вы готовы заплатить за коммерческое решение, toolchain CodeSourcery ARM имеет интеграцию IDE, чтобы автоматически установить все это, включая поддержку "printf" для печати в консоли отладчика. Это работает физическая плата тоже, если у вас есть аппаратный отладчик. Обычная оговорка о том, что я являюсь сотрудником CodeSourcery, применяется, но я считаю, что это очень просто в использовании.)
Обновление, 2012: toolchain CodeSourcery теперь называется Mentor Graphics Sourcery CodeBench, но все вышеприведенное все еще применяется.