Es musste früher oder später so kommen: Ich bastel an der Arduino-Library für KNX (http://www.konnekting.de) und hab die notwendige Hardware nicht zum testen parat. Ergo muss ich „gegen den Compiler“ entwickeln. Der ist nach einem größeren Umbau nun endlich wieder zufrieden. Ergebnis: Läuft zusammen mit der Hardware nicht 🙁
Irgendwo muss sich wohl ein Lautzeitfehler eingeschlichen haben. Normalerweise wird das im Arduino-Umfeld mit der „seriellen Konsole“ mit entsprechenden Log-Meldungen debugged. Das kostet etwas Zeit, ist aber recht easy.
Was aber wenn der Crash auftritt noch bevor man es schafft im Code die serielle Schnittstelle anzusprechen? In meinem konkreten Fall muss es an einer der statischen Klassen liegen, die noch vor dem Aufruf von setup() instantiiert werden. Hier hat man meines Wissens nur zwei Möglichkeiten:
- Möglichst den ganzen Code auskommentieren (und damit deaktivieren) und dann Stück für Stück wieder aktivieren/flashen und schauen ab wann der Crash wieder passiert. Damit kann man die Ursache recht genau eingrenzen
- Man verwendet einen Hardware-Debugger. Damit kann man am PC Code-Zeile für Code-Zeile ausführen und direkt verfolgen welche Code-Zeile welches Verhalten produziert und welche Variable vergessen wurde zu initialisieren oder sogar eine falsche Initialisierung erfährt.
Möglichkeit 1 war bisher das Mittel meiner Wahl. Aber bei einem Projekt dieser Größe ist das mehr und mehr lästig und kompliziert den ganzen Code zu deaktivieren und Stück für Stück wieder einzuschalten.
Ich habe mich nun für Möglichkeit 2 entschieden und und mit Versand rund 66EUR in das hier investiert:
Damit kann man nicht nur Atmel AVR Controller, sondern auch die neueren Atmel SAMD debuggen.
Bin gespannt wie gut sich das mit Linux bewerkstelligen lässt. Denn das ATMEL Studio gibt es nur für Windows.
Ich werde berichten…