Haltepunkte sind eine großartige Möglichkeit, um zu sehen, wie der Compiler zu Ihrem Code ausgeführt wird. Meine Frage ist nun, gibt es eine Möglichkeit, Haltepunkte zu verwenden, wenn Sie Ihren Code debuggen?
Wie in Majenkos Antwort erwähnt, bietet die Arduino IDE keinen Haltepunktmechanismus, aber Atmel Studio unterstützt Haltepunkte . [*]
Wenn Sie jedoch über einen Schalter und eine LED verfügen, können Sie den Fortschritt Ihres Programms auf eine Weise verfolgen, die einige der Vorteile von Haltepunkten bietet. Sie würden beispielsweise eine Unterroutine hinzufügen BPReport()
, die über die serielle Ausgabe oder ein LCD Werte kritischer Variablen anzeigt, dann die LED aufleuchtet und mit Entprellen wartet, bis der Schalter gedrückt und losgelassen wurde. Rufen Sie Ihre BPReport()
Routine an, wo immer Sie einen bedingungslosen Haltepunkt wünschen. Für bedingte Haltepunkte können Sie eine Routine haben, BPReportIf(cond)
die aufruft, BPReport()
ob dies der cond
Fall ist. Wenn Sie nicht seriell ausgeben möchten, können Sie mehrere LEDs oder ein LCD verwenden, und Sie können mehrere Schalter verwenden, wenn Sie externe Unterbrechungssteuerungen wünschen (dies cond
könnte beispielsweise ein Test für einen der zusätzlichen Schalter sein).
[*] Einige Hardware-Debugger ändern den heruntergeladenen Code jedes Mal, wenn Haltepunkte hinzugefügt, geändert oder entfernt werden. Durch diese Verwendung wird der Flash-Speicher schneller abgenutzt als nur gelegentlich heruntergeladen. Wenn ein Chip für ein solches Debugging häufig verwendet wurde, verwenden Sie diesen Chip nicht in einem Produktionssystem.
Obwohl Majenko seine Antwort richtig ist, gibt es einige andere Möglichkeiten.
In Bezug auf das echte Hardware-Debugging, wie von Majenko angegeben, würde ich sagen:
Eine andere Debugging-Option aus einer völlig anderen Kategorie besteht darin, Ihren Code so zu organisieren, dass Entscheidungslogik (hardwareunabhängig) und Aktion (hardwareabhängig) vollständig getrennt sind.
Kompilieren Sie dann Ihre Skizze als lokales Programm und debuggen Sie die "Entscheidungslogik" auf Ihrem lokalen Computer. Diese Methode erlaubt kein "Hardware-Debugging". Diese Methode ermöglicht auch Unit-Tests.
Beachten Sie, dass Ihr lokaler Computer wahrscheinlich 32 oder 64 bitter ist und die meisten Arduinos 8 bitter sind, was zu Unterschieden in den Datentypen führt, was bei Verwendung dieser Methode ein zusätzlicher Aufmerksamkeitspunkt ist.
Die Arduino-Debug- Bibliothek bietet einen einfachen On-Target-Debugger für Arduino-Skizzen. Debug-Befehle werden direkt zur Skizze hinzugefügt. Eine Debugger-Befehlsshell wird für Haltepunkte und Zusicherungen gestartet.
Der Screenshot oben zeigt die Beispielskizze, die auf einem Arduino Mega mit seriellem Ausgabemonitor ausgeführt wird, der von der Anwendung verwendet wird, und Serial1, das für die Debugger-Shell verwendet wird.
Skizzieren Sie Debug-Befehle
Debug-Shell-Befehle
Alle Debug-Shell-Befehle können als Einzelzeichenbefehle abgekürzt werden. Weitere Informationen finden Sie in der README-Datei. Installationsdetails, Beispielskizze und Benchmarking.
Nicht in der Arduino IDE.
Du musst:
Das Debuggen über die UART / USB-Schnittstelle mit dem Bootloader ist nicht vorgesehen.
quelle