Есть ли способ установить контрольные точки исходного уровня, запустить код на реальном аппаратном обеспечении и уметь проверять переменные и продолжать?
Как вы отлаживаете код Arduino, работающий на оборудовании Arduino?
Ответ 1
плагин Visual Micro для Microsoft Visual Studio 2015 Community Edition (бесплатно) предоставляет USB-отладчик для Arduino, Это позволяет делать то, что вы описываете. (Не забудьте нажать, чтобы установить С++ во время установки IDE)
Отладчик поддерживает последовательный, радиочастотный, Bluetooth и некоторые Wi-Fi. Он позволяет отслеживать или обновлять значения переменных во время работы Arduino. Отображаются диаграммы и данные/выводные изображения, а также часы, трассировка, разрыв.
Новости: Январь 2016 также включает выпуск отладчика GDB для Arduino Zero. Как и в случае с отладчиком Serial/Bluetooth, версия GDB поддерживает исходный код ino/cpp, но дополнительно поддерживает отладку ядра и библиотек Arduino. Он поддерживает множество функций, таких как: шаг вперед, шаг, шаг или исходная строка, память, регистры, локальные жители, часы, живые выражения и трассировка стека.
Ответ 2
Способ установки "контрольных точек источника" на Arduino состоит в том, чтобы добавить последовательный вывод для отправки значения, которое вы хотите видеть в последовательном мониторе.
Когда вы будете готовы, следующим шагом будет переход на WinAVR, AVR Studio и Atmel JTAG Mark II или Atmel Dragon.
Эти программы и устройства позволят вам создать код C и сделать один шаг через код и контролировать переменные и регистры. Устройства JTAG могут выполнять один шаг через ваш код C или код сборки, созданный компилятором.
Следует помнить, что высокоуровневое встроенное программирование на С все еще очень близко к машине, и вы должны быть осторожны с однократными подпрограммами прерывания, подпрограммами таймеров и другими низкоуровневыми процедурами, потому что много раз это предотвратит правильную работу кода.
Ответ 3
Для проверки переменных я просто печатаю их на последовательном мониторе. Вот пример, над которым я сейчас работаю:
# Setup
Serial.begin(9600);
# Loop
Serial.println(String(index) + " : " + String(total) + " : " + String(average));