Я пишу программу-симулятор для нестандартного микроконтроллера на C ++. Я хотел бы, чтобы пользователь мог использовать GDB для отладки своей программы, как если бы она работала на реальной цели.
Лучшее решение, которое я нашел, похоже, заключается в написании заглушки GDB для моего симулятора, которая будет взаимодействовать с GDB с использованием сетевого протокола. Однако это включает в себя написание полной программы, которая позаботилась бы о сетевом взаимодействии и связи с самим GDB.
Это кажется немного излишним, так как клиент и цель будут работать на одной машине. Нет ли более простого способа? Если бы не было, с популярностью GDB, я бы подумал, что существует библиотека или, по крайней мере, примеры, которые помогут встроить заглушку в обычную программу для настольного ПК?
Вы, конечно, можете написать «заглушку», которая является частью основного приложения — все, что вам нужно сделать, это прослушать соответствующий канал связи и соответствующим образом отреагировать на отправляемые команды / данные.
Вот статья, которая довольно хорошо описывает процесс написания заглушки:
http://www.embecosm.com/appnotes/ean4/embecosm-howto-rsp-server-ean4-issue-2.html
Также обсуждается (хотя и кратко) «использование симулятора».
GDB также поддерживает симулятор «встраивания» в сам GDB. Это вызывается командой «target sim» в gdb.
Посмотрите подкаталог sim в gdb, чтобы увидеть список уже реализованных симуляторов.