Невозможно запустить GDBserver с использованием последовательного соединения

Я запускаю небольшую тестовую программу на встроенной Linux-системе (Freescale i.MX25), которую хочу отладить с помощью GDB. Я подключаюсь к системе с помощью кабеля FTDI USB-RS232 через виртуальную машину Ubuntu. GDBserver установлен на цели. У меня нет поддержки Ethernet или USB на цели, поэтому я пытаюсь использовать GDB через последовательный порт.

Когда я вхожу в цель с помощью Minicom, я получаю:

login[1691]: root login on 'ttymxc0'

что, я полагаю, означает, что консоль использует ttymxc0. Затем я пытаюсь запустить GDBserver для прослушивания подключений виртуальной машины к программе test, находящейся в /home:

$ cd /home
$ gdbserver /dev/ttymxc0 test

который дает вывод (неоднократно):

Remote debugging using /dev/ttymxc0
readchar: Socket operation on non-socket
Remote side has terminated connection. GDBserver will reopen the connection

Это ошибка в том, как я пытаюсь использовать GDBserver, или что-то еще? Есть ли другой способ отладить программу?


person Ed King    schedule 14.03.2016    source источник


Ответы (1)


Вы не можете использовать ttymxc0 для двух целей одновременно (последовательная консоль и последовательный gdb). Отключите getty в этой последовательной строке и замените его на gdbserver.

person Frank Meerkötter    schedule 14.03.2016
comment
Хорошо, как мне это сделать? Консоль — это мой единственный доступ к процессору во время выполнения, поэтому я думаю, что если я отключу консоль, я не смогу переназначить ttymxc0 на GDBserver..? - person Ed King; 15.03.2016
comment
Getty для последовательной линии обычно запускается через init. Итак, как заменить запуск getty на gdbserver, зависит от вашей конкретной системы инициализации. Можете ли вы перепрошить цель с измененной конфигурацией инициализации? - person Frank Meerkötter; 15.03.2016
comment
Спасибо за ваш вклад. Я умею перепрошивать цель. Означает ли это, что я пожертвую консолью на весь сеанс и мне придется перепрошивать (что занимает час), чтобы снова включить консоль? Какую процедуру я должен был бы написать? - person Ed King; 16.03.2016