Как отлаживать Linux TUI-приложения для Raspberry Pi с помощью Visual Studio - PullRequest
2 голосов
/ 15 апреля 2020

Я пишу приложение C ++ TUI для запуска в терминале моего raspberry pi с использованием библиотеки ncurses. Я делал это с помощью linux удаленной надстройки C ++ для разработки в Visual Studio, но я столкнулся с некоторыми трудностями в том, как я должен go отладить его.

Встроенный в Visual Studio есть консольное окно linux, которое отображает выходные данные соединения s sh, которые Visual Studio создает с помощью raspberry pi, поэтому, если вы пишете интерфейс консоли, используя только std :: cout и std :: cin, это делает работа для взаимодействия и отладки приложения. Однако Ncurses не использует стандартные потоки ввода и вывода, и поэтому интерфейс ncurses, написанный в коде, не отображается в окне консоли linux.

Поэтому, по сути, я хочу иметь возможность взаимодействовать с выводом моего приложения на экран raspberry pi при сборке и запуске моего решения linux в visual studio вместо использования окна консоли linux. Я хочу, чтобы окно терминала с моим приложением ncurses, запущенным в режиме отладки, появлялось на основном дисплее моего raspberry pi, при этом все еще имея полные элементы управления отладкой для него в visual studio (например, точки останова и тому подобное). Я не знаю, как это сделать.

Pre-launch Command property

Я видел в других руководствах по отладке GUI приложений (например, с использованием GTK). ) написано для linux с использованием Visual Studio, что ключом для этого может быть свойство «Команда перед запуском», найденное на странице свойств отладки проекта C ++ Linux. В руководстве GTK GUI они поместили команду export DISPLAY =: 0.0 в это свойство, чтобы приложение GUI в режиме отладки появилось на основном дисплее Raspberry Pi. Это не работает для приложений TUI как бы то ни было. Поэтому я надеюсь, что решение моей проблемы будет таким же простым, как поиск правильного аргумента для ввода этого свойства.

Ссылка на учебник GUI, на который я здесь ссылаюсь, http://comfilewiki.co.kr/en/doku.php?id=comfilepi: create_a_linux_project: index # define_the_include_paths_in_the_project_s_properties

Спасибо всем, кто мне помогает.

1 Ответ

2 голосов
/ 15 апреля 2020

A RaspberryPi может запускать некоторые дистрибутивы Linux, полученные из Debian, например, Raspbian .

. RaspberryPi имеет Wi-Fi и сеть rnet. Вы должны быть в состоянии настроить их для обслуживания s sh (1) через sshd (8) через Wi-Fi или через rnet.

Один раз сервер sshd работает на вашем RaspBerryPi, вы просто используете ssh на своем компьютере для кросс-разработки Linux для доступа к нему из командной строки.

Отладчик gdb имеет удаленная отладка средств, но вы можете просто запустить его на RaspBerryPi, доступном через ssh

Я пишу C ++ TUI-приложение для запуска в терминале моей малины пи с помощью библиотеки ncurses.

У меня есть более простая рекомендация:

отладить ваше приложение C ++ TUI на вашем ноутбуке или настольном компьютере с каким-либо дистрибутивом Linux.

Только после его отладки -компилировать его для вашего RaspBerryPi.

Большинство приложений на C ++ можно написать с достаточной тщательностью, чтобы их можно было легко перенести с Debian, работающего на вашем ноутбуке x86-64, на Raspbian, работающий на RaspberryPi. Будьте осторожны, придерживаясь стандарта C ++ 11 (читай n3337 ) или C ++ 17. Включить большинство предупреждений при компиляции с недавним G CC, даже если это кросс-компилятор. Поэтому используйте как минимум g++ -g -Wall -Wextra и улучшайте исходный код C ++, чтобы минимизировать предупреждения компилятора.

Рекомендация: установите какой-нибудь дистрибутив Linux на свой ноутбук или настольный компьютер для разработки.

Для этого вам просто нужно менее ста гигабайт свободного места на диске. Обе Ubuntu и Debian очень просты в установке и бесплатной загрузке.

После запуска Linux на вашем ноутбуке или настольном компьютере, и Raspbian работает на вашем RaspberryPi, вам просто нужно подключить их, например, с помощью кабеля Ethe rnet.

Я рекомендую установить пакеты build-essential и crossbuild-essential-arm64 в Debian (или Ubuntu) на вашем ноутбуке Linux. Также рассмотрите возможность установки git контроля версий, редактора emacs (и / или geany и / или Visual Studio Code ), отладчик gdb , компилятор g++ , генератор документации doxygen , возможно графический набор инструментов Qt , ninja инструмент автоматизации сборки, GNU guile и / или Python и / или Lua и / или GNU awk язык сценариев

Не забудьте потратить несколько дней на чтение документации.

...