Der Hauptgrund für das Nicht-Debuggen mit printf () ist, dass es normalerweise ineffizient, unangemessen und unnötig ist.
Ineffizient: printf () und kin verbrauchen viel Flash und RAM im Vergleich zu dem, was auf einem kleinen Mikrocontroller verfügbar ist, aber die größere Ineffizienz liegt beim eigentlichen Debuggen. Das Ändern des Protokolls erfordert das Neukompilieren und Neuprogrammieren des Ziels, wodurch der Prozess verlangsamt wird. Es wird auch ein UART verbraucht, mit dem Sie sonst nützliche Arbeit leisten könnten.
Unangemessen: Es gibt nur so viele Details, die Sie über eine serielle Verbindung ausgeben können. Wenn das Programm hängt, wissen Sie nicht genau, wo, nur die letzte Ausgabe, die abgeschlossen wurde.
Unnötig: Viele Mikrocontroller können remote getestet werden. JTAG- oder proprietäre Protokolle können verwendet werden, um den Prozessor anzuhalten, Register und RAM zu überprüfen und sogar den Status des aktiven Prozessors zu ändern, ohne ihn neu kompilieren zu müssen. Aus diesem Grund sind Debugger im Allgemeinen eine bessere Methode zum Debuggen als Ausdrucke, selbst auf einem PC mit viel Speicherplatz und Leistung.
Es ist bedauerlich, dass die häufigste Mikrocontroller-Plattform für Neulinge, Arduino, keinen Debugger hat. Der AVR unterstützt Remote-Debugging, aber das DebugWIRE-Protokoll von Atmel ist proprietär und nicht dokumentiert. Sie können ein offizielles Entwickler-Board verwenden, um mit GDB zu debuggen, aber wenn Sie das haben, sind Sie wahrscheinlich nicht mehr zu besorgt über Arduino.