Почему GDB не работает для меня

Фон

В настоящее время я пытаюсь построить автономный дрон, используя ROS на моем Rapsberry Pi который работает Ubuntu MATE 16.04 LTS. Решение проблемы компьютерного зрения по распознаванию красных кругов на данный момент.

Конкретная проблема

Я постоянно получаю сообщение об ошибке этот вопрос. Чтобы помочь мне решить эту проблему, я решил использовать GDB. Тем не менее, команда rosrun --prefix 'gdb run --args' zlab_drone vdstab не похоже на работу для меня. zlab_drone это название пакета и vdstab это имя исполняемого файла, который я пытаюсь запустить. Поскольку это внутри среды ROS, я взял синтаксис из Вот, и использовал предложения в этот вопрос.

Когда я вызываю эту команду, даже с tuiЯ получаю SIGSEGV и когда я призываю list внутри gdb Сама программа не остается в определенной точке и продолжает перечислять другую строку, пока она не выйдет из диапазона. Это довольно странная проблема.

Мне удалось заставить это работать без этой проблемы ранее с помощью другой команды, я считаю. Я просто не могу вспомнить, как я заставил это работать в прошлый раз.

0

Решение

Ну, в ссылка на сайт Вы упомянули, ясно, что вы должны использовать либо:

launch-prefix="xterm -e gdb --args" : run your node in a gdb in a separate xterm window, manually type run to start it

или же :

launch-prefix="gdb -ex run --args" : run your node in gdb in the same xterm as your launch without having to type run to start it

Так что, похоже, ты пропустил -бывший как @ ks1322 предложено в комментариях или просто введите бежать чтобы начать процесс отладки.

0

Другие решения

Я узнал о этот Эксклюзивная ошибка, которая касается исключительно Raspberry Pi. В основном решение включает в себя, как сказал Питер Беннет:

Есть обходной путь. Запустите программу, затем из другой команды
или через удаленный вход по ssh, используйте gdp -p xxxxx, где xxxxx
номер процесса. Это работает без сбоев. Если вам нужно отладить
то, что происходит, прежде чем вы можете получить из другой команды
подскажите, добавьте в программу команду, которая останавливает процесс на
начало основного, например, вызов get, который будет ждать вас
нажмите ввод, прежде чем продолжить.

0

По вопросам рекламы [email protected]