Точки останова - отличный способ увидеть, как компилятор работает с вашим кодом. Теперь мой вопрос: есть ли возможность использовать точки останова при отладке кода?
Точки останова - отличный способ увидеть, как компилятор работает с вашим кодом. Теперь мой вопрос: есть ли возможность использовать точки останова при отладке кода?
Ответы:
Как отмечается в ответе Майенко, среда IDE Arduino не предоставляет механизм точек останова, но Atmel Studio поддерживает точки останова . [*]
Однако, если у вас есть переключатель и светодиод, вы можете отслеживать ход вашей программы таким образом, чтобы обеспечить некоторые преимущества точек останова. Вы могли бы добавить подпрограмму, скажем BPReport()
, что через последовательный выход или ЖК-дисплей сообщает значения критических переменных, затем загорается светодиод и ждет, пока переключатель не будет нажат и отпущен, с отладкой. Позвоните в вашу BPReport()
программу, где бы вы ни хотели, безусловную точку останова Для условных точек останова у вас может быть подпрограмма, BPReportIf(cond)
которая вызывает BPReport()
if, если cond
true. Если вы не хотите выводить через последовательный порт, вы можете использовать несколько светодиодов или ЖК-дисплей, и вы можете использовать несколько переключателей, если вам нужны внешние средства управления отключением (например, это cond
может быть проверка одного из дополнительных переключателей).
[*] Некоторые аппаратные отладчики изменяют загруженный код каждый раз, когда точки останова добавляются, изменяются или удаляются. Такое использование изнашивает флэш-память быстрее, чем просто время от времени загружает ее. Если для такой отладки интенсивно использовался чип, не используйте его в производственной системе.
Хотя Majenko его ответ правильный, есть и другие варианты.
Что касается реальной аппаратной отладки, заявленной Маженко, я бы сказал:
Другим вариантом отладки из совершенно другой категории является организация вашего кода таким образом, чтобы логика принятия решений (аппаратно-независимая) и действие (аппаратно-зависимая) были полностью разделены.
Затем скомпилируйте эскиз как локальную программу и отладьте «логику принятия решений» на локальном компьютере. Этот метод не допускает «аппаратную отладку». Этот метод также позволяет юнит-тестирование.
Обратите внимание, что ваш локальный компьютер, вероятно, является 32- или 64-битным, а большинство Arduino - 8-битными, что приведет к различиям в типах данных, что является дополнительным моментом внимания при использовании этого метода.
Библиотека Arduino-Debug предоставляет простой отладчик для эскизов Arduino. Команды отладки добавляются непосредственно в эскиз. Командная оболочка отладчика запускается на точках останова и утверждениях.
На приведенном выше снимке экрана показан пример эскиза, запущенного на Arduino Mega с монитором Serial output, используемым приложением, и Serial1, используемым для оболочки отладчика.
Команды отладки Sketch
Команды отладочной оболочки
Все команды оболочки отладки могут быть сокращены до односимвольных команд. Пожалуйста, смотрите README для получения дополнительной информации; детали установки, пример эскиза и бенчмаркинг.