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