Можно ли иметь несколько подключений к gdbserver?
Я использую Eclipse CDT и симулятор GNU ARM QEMU. Затмение начинает свое собственное gdb
сессия с gdbserver
работает на QEMU. Я также хочу иметь возможность подключения с терминала OSX для более точной настройки. Я также хочу иметь возможность использовать GDB/MI из скрипта Node.js для сбора полезных данных, таких как статус регистра и т. Д., И визуализации их на веб-странице.
Я могу нормально подключиться при запуске автономного симулятора QEMU со своим собственным сеансом GDB, но я хотел знать, возможно ли перенести обратно в GDB Eclipse, или установить второе подключение к gdbserver
,
Спасибо!
С https://sourceware.org/gdb/onlinedocs/gdb/Server.html (20.3.1.2):
Когда GDB-сервер продолжает работать, GDB может подключиться к нему позже. Такое переподключение полезно для таких функций, как отключенная трассировка. Для полноты одновременно можно подключить не более одного GDB.
До сих пор я не мог понять это, и из документов кажется, что это невозможно.
Решение, которое я использую сейчас, - это запустить симулятор QEMU вручную из терминала. Отладчик GNU ARM Eclipse позволяет указать gdbserver
host:port
, который я могу указать на автономный QEMU, который работает нормально.
Чтобы разрешить одновременные сеансы GDB, я мог бы создать собственный сервер TCP для подключения к Eclipse вместо прямого подключения к gdbserver
, Этот TCP-сервер перенаправляет весь трафик с Eclipse на gdbserver
, и я также могу слушать и отправлять сообщения в GDB по этому каналу.
Конечным результатом является то, что вы можете отлаживать и устанавливать точки останова в Eclipse как обычно, а также взаимодействовать с GDB любым удобным для вас способом, например, через веб-интерфейс, собственный OSX-терминал и т. Д.
1 ответ
Нет встроенного способа сделать это. Есть проект для его реализации, но я не знаю, насколько он может быть активным.
Ваша идея иметь своего рода прокси может сработать. Я думаю, что он не сильно отличается от подхода, предложенного для мультиклиентского проекта. Если вас интересуют только те данные, которые уже могут пройти по проводам, другой аналогичный подход может заключаться в том, чтобы вставить куда-нибудь тройник и просто отфильтровать интересующие ответы.