Как завершить gdbserver при использовании GDB внутри Qt Creator?

У меня очень похожий вопрос, чем вопрос, заданный в этом вопросе SO, но с небольшой разницей : Я запускаю GDB из Qt Creator, а не вызываю его из терминала, поэтому нет прямого доступа к терминалу для выполнения таких команд, как monitor exit, или для прекращения работы gdbserver.

И есть еще одна проблема: как только я вызываю команду для gdbserver, чтобы начать прослушивание порта (и это делается через Minicom), я просто теряю любую команду над Minicom или моим целевым устройством! Неважно, что я набираю (ps, quit, kill ..., Ctr+C и т. д.), в Minicom ничего не принимается в качестве команды после вызова команды для запуска gdbserver.

Итак, имея эту конкретную проблему/ситуацию, как я могу остановить gdbserver, когда он прослушивает?


person Momergil    schedule 08.09.2014    source источник


Ответы (2)


В QtCreator, если вы нажмете Window -> Views -> Debugger Log, вы сможете получить доступ к консоли gdb. Оттуда, используя левую панель отображаемой панели, вы можете отправлять команды gdb и читать вывод на правой панели. Я предполагаю, что вы также можете ввести monitor exit, чтобы остановить работу gdbserver.

Во всяком случае, в нормальных условиях gdbserver автоматически завершается, как только вы прекращаете отладку в QtCreator (по крайней мере, на моем ПК это работает так).

person Morix Dev    schedule 09.09.2014

Ха-ха, глупо с моей стороны! Казалось бы, меня заставили понять, как неправильно работают системы, и из-за этого я все делаю неправильно :)

На самом деле кажется, что Qt Creator обрабатывает gdbserver самостоятельно; это просто вопрос наличия gdbserver на целевом устройстве, которым будет управлять Qt Creator, поэтому просто нажмите «запустить в режиме отладки» и продолжайте (и он автоматически закроет gdbserver, когда программа будет завершена). Я мог убедиться в этом, прочитав консоль gdb, упомянутую Morix Dev.

Настоящая проблема заключалась в том, что я думал, что нужно будет работать с GDB + gdbserver с Qt Creator так же, как это можно сделать только с помощью терминала/командной строки: нужно будет запустить gdbserver внутри цели, выполнив команду

gdbserver hostip:port app-name

а затем запустить приложение в Qt Creator в режиме отладки, но, похоже, я ошибся; этот «процесс из двух частей» требуется только при использовании всей системы GDB в Терминале. Итак, что происходило, так это то, что Qt Creator отлично справлялся со своими задачами, и когда я пытался закрыть gdbserver, работающий в цели, я обнаруживал, что застрял с упомянутой проблемой.

person Momergil    schedule 09.09.2014