Як використовувати точки відключення для налагодження


9

Точки розриву - прекрасний спосіб побачити, як компілятор працює до вашого коду. Тепер моє запитання полягає в тому, чи існує можливість використовувати точки прориву при налагодженні коду?

Відповіді:


9

Як зазначається у відповіді Маєнко, IDE Arduino не забезпечує механізм точки перерви, але Atmel Studio підтримує точки прориву . [*]

Однак якщо у вас є вимикач та світлодіод, ви можете відстежувати хід вашої програми таким чином, що забезпечує деякі переваги точок перерви. Ви б додали підпрограму, скажімо BPReport(), що через послідовний вихід або РК-дисплей повідомляє про значення критичних змінних, потім запалює світлодіод і чекає, поки вимикач буде натиснений і відпущений, з розблокуванням. Зателефонуйте до свого BPReport()розпорядку, де хочете беззастережної точки перерви. Для умовних точок перерви у вас може бути розпорядок, BPReportIf(cond)який викликає, BPReport()якщо condце правда. Якщо ви не хочете виводити послідовно, ви можете використовувати декілька світлодіодів або РК-дисплей, а також, якщо ви хочете зовнішнього регулювання вимикання, ви можете скористатися декількома перемикачами (наприклад, це condможе бути тест одного з додаткових комутаторів).

[*] Деякі апаратні налагоджувачі змінюють завантажений код щоразу, коли точки пробою додаються, змінюються або видаляються. Це використання зносить флеш-пам’ять швидше, ніж просто час від часу завантажуючи на неї. Якщо чіп активно використовувався для такої налагодження, не використовуйте цей чіп у виробничій системі.


4

Хоча Маєнко його відповідь правильний, є деякі інші варіанти.

Щодо справжньої апаратної налагодження, як заявив majenko, я би сказав:

  1. Встановіть і використовуйте справжній IDE, такий як Atmel Studio або плагін arduino eclipse під назвою sloeber (я автор), і
  2. Використовуйте повний апаратний налагоджувач або апаратне забезпечення, яке має його на борту, як Arduio zero або апаратне забезпечення, використовуючи іншу технологію налагодження, наприклад ESP8266, яка дозволяє налагоджувати USB

Інший варіант налагодження з абсолютно іншої категорії полягає в тому, щоб організувати свій код таким чином, щоб логіка рішення (від апаратного забезпечення) та дії (залежно від апаратних засобів) були повністю розділені.

Потім складіть свій ескіз як локальну програму і налагодьте «логіку рішення» на локальній машині. Цей метод не дозволяє проводити "апаратну налагодження". Цей метод також дозволяє тестувати одиниці.

Зауважте, що ваша локальна машина, ймовірно, 32 або 64 гіркі, а у більшості Arduino 8 гірок, що призведе до відмінностей у типах даних, що є додатковою увагою при використанні цього методу.


4

Бібліотека Arduino-Debug надає простий налагоджувальний налагоджувач для ескізів Arduino. Команда налагодження додається безпосередньо до ескізу. Оболонка команд налагодження запускається на точках розриву та твердженнях.

введіть тут опис зображення

На екрані, показаному вище, показаний приклад ескізу на Arduino Mega з монітором послідовного виводу, який використовується додатком, і Serial1, який використовується для оболонки налагодження.

Ескізні команди налагодження

  • ASSERT (cond) Перевірте стан твердження. Якщо помилковим, викликається оболонка налагодження. Ескіз не може продовжуватися.
  • BREAKPOINT () Викликається оболонка налагодження.
  • BREAK_IF (cond) Оболонка налагодження викликається, якщо умова є правдою.
  • CHECK_STACK (кімната) Перевірте, чи є на стеку місце (байти). Якщо помилковим, викликається оболонка налагодження.
  • DEBUG_STREAM (dev) Використовуйте даний пристрій потоку для сеансу налагодження. Зазвичай серійні.
  • OBSERVE (expr) Роздрукуйте вираз у потоці налагодження.
  • OBSERVE_IF (cond, expr) Роздрукуйте вираз у потоці налагодження, якщо умова справжня.
  • REGISTER (var) Зареєструйте змінну для доступу з оболонки налагодження. Налагодження команд оболонки

Налагодження команд оболонки

  • ? VARIABLE Друкує змінну адресу та значення змінної.
  • @ VARIABLE Друкує адресу змінної вказівника та значення посилання.
  • backtrace Друкувати простий стек викликів.
  • команди Друк списку команд (див. також довідку).
  • data Друкується вміст області даних, тобто глобальних змінних.
  • go Залишити оболонку налагодження та продовжити виконання ескізу.
  • heap Друк вмісту купи, тобто динамічних виділених даних.
  • допомога Друк списку команд.
  • пам'ять Стан пам'яті для друку.
  • кинути зупинку ескіз.
  • стек Друк вмісту стеку, тобто кадри виклику, аргументи, зворотні адреси.
  • Змінні Друк списку зареєстрованих змінних.
  • де друкуйте файл вихідного коду та рядок, де викликалася оболонка налагодження.

Всі команди оболонки налагодження можуть бути скорочені до команд одного символу. Будь ласка, дивіться README для отримання більш детальної інформації; деталі встановлення, приклад ескізу та бенчмаркінгу.


1
Подарункова бібліотека Mikael дозволяє встановлювати умовні точки перерви, друкувати значення змінних, стан пам’яті, сліди виклику та перевіряти та змінювати змінні в точці розриву. Pro: не потрібно апаратне забезпечення ($$), не збивається на Flash так важко (як встановлення та видалення точок зламу за допомогою апаратного відладчика). ....
Дж. Роберт

1
.... Con: Більш сильний вплив на кодовий простір програми, деякий простір оперативної пам’яті та, можливо, час роботи, якщо вивчає критичний за часом код; деяка крива навчання для збирання (а пізніше видалення) бібліотечних викликів; необхідність передбачити місця пробою або перекомпілювати їх, коли ви виявите, де вони вам потрібні. Мінуси не є критикою роботи Мікаеля; вони приходять з цією технікою.
JRobert

1
@JRobert Ніцца Про-Con резюме! Я спробував вирішити деякі мінуси, дозволивши налаштувати налагоджувач. Існує набір визначень, що дозволить додаткам, які спричиняють слід, зменшити оболонку налагодження до мінімуму. Як і будь-який налагоджувач для вбудованих систем, важко налагоджувати критичний (безперервний) код у часі з точками розриву. Єдина альтернатива - пункти спостереження. Вони можуть бути оптимізовані за допомогою буфера слідів та видалення послідовного виводу за критичним часом.
Мікаель Патель

3

Не в Ардуїно IDE.

Тобі потрібно:

  1. Встановіть і використовуйте справжню IDE, наприклад, Atmel Studio та
  2. Використовуйте повний апаратний налагоджувач

Не передбачено налагодження через інтерфейс UART / USB за допомогою завантажувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.