Основная причина отказа отладки с помощью printf () заключается в том, что она обычно неэффективна, неадекватна и не нужна.
Неэффективно: printf () и kin используют много флэш-памяти и оперативной памяти относительно того, что доступно на небольшом микроконтроллере, но большая неэффективность заключается в реальной отладке. Изменение того, что регистрируется, требует перекомпиляции и перепрограммирования цели, что замедляет процесс. Он также использует UART, который вы могли бы использовать для выполнения полезной работы.
Недостаточно: есть только так много деталей, которые вы можете выводить через последовательный канал. Если программа зависает, вы не знаете точно, где, только последний завершенный вывод.
Нет необходимости: многие микроконтроллеры можно удаленно отлаживать. JTAG или проприетарные протоколы могут использоваться для приостановки процессора, просмотра регистров и оперативной памяти и даже изменения состояния работающего процессора без перекомпиляции. Вот почему отладчики, как правило, являются лучшим способом отладки, чем операторы печати, даже на ПК с огромным пространством и мощностью.
К сожалению, самая распространенная микроконтроллерная платформа для новичков, Arduino, не имеет отладчика. AVR поддерживает удаленную отладку, но протокол Atmel debugWIRE является проприетарным и недокументированным. Вы можете использовать официальную панель разработки для отладки с помощью GDB, но если у вас есть такая возможность, вы, вероятно, больше не будете беспокоиться об Arduino.