Aus Raspberry Pi Geek 02/2022

Fehlersuche auf dem Pi Pico mit Visual Studio Code

© thelightwriter / 123RF.com

Auf Käferjagd

Bernhard Bablok

Mit dem Debugger der IDE Visual Studio Code spüren Sie Fehler in Ihren Programmen im Handumdrehen auf.

Im vorliegenden dritten Teil unserer Mini-Serie rund um die Programmierung des Raspberry Pi Pico geht es um die Suche nach logischen Fehlern in an sich lauffähigem Code. Die Entwicklungsumgebung Visual Studio Code (VSC [1]) bietet dafür ideale Voraussetzungen. Dieser Artikel geht davon aus, dass Sie die IDE wie im ersten Teil [2] beschrieben eingerichtet haben. Idealerweise haben Sie auch den zweiten Teil [3] der Serie gelesen und ein lauffähiges Programm erstellt.

TIPP

Die ersten beiden Teile der Serie finden Sie als PDF im Download-Bereich zu diesem Artikel.

Entwanzen

Erfahrungsgemäß ist kein Programm auf Anhieb perfekt. Echte Programmierfehler (also Syntaxfehler) mahnt VSC sofort an, unterkringelt die entsprechenden Codestellen rot und führt die Fehler zudem in seiner Fehlerliste auf. Dort listet es auch Fehler auf, die erst beim Bau des Programms auffallen, etwa fehlende Bibliotheken.

Fehler in der Logik treten allerdings erst beim Ablauf des Programms zutage. Die einfachste Möglichkeit, sie zu identifizieren, bieten Print-Ausgaben an entscheidenden Stellen im Code. Sie sehen dann, ob das Programm dort überhaupt vorbeikommt, und können die Werte von Variablen ausgeben. Dieses Vorgehen hat aber zwei gravierende Nachteile: Zum einen macht es erhebliche Mühe, zum anderen müssen Sie den Code anschließend noch bereinigen. Hier bietet sich der Einsatz des integrierten Debuggers des Pico an, der das Ausführen von Programmen auf Einzelschrittebene erlaubt.

Voraussetzungen

Damit das funktioniert, müssen Sie das Programm im Debug-Modus übersetzen und einen Steuerrechner (bei uns ein RasPi) mit dem Pico verbinden. Außerdem kommt noch ein Hilfsprogramm ins Spiel, das zwischen Rechner und Pico vermittelt. Die Übersetzung im Debug-Modus schalten Sie wie im letzten Teil beschrieben in der Fußzeile von VSC an (Abbildung 1). Um den Rest müssen Sie sich nicht kümmern.

Abbildung 1: Den Debug-Modus aktivieren Sie in der Fußzeile von Visual Studio Code.

Abbildung 1: Den Debug-Modus aktivieren Sie in der Fußzeile von Visual Studio Code.

Das Debugging übernimmt bei VSC ein Plugin, das bei der Installation mit auf dem Rechner gelandet ist. Da es sich bei C/C++-Entwicklung um das Brot-und-Butter-Geschäft von Millionen von Entwicklern handelt, werden sowohl der Editor als auch die Plugins ständig weiterentwickelt. Aus diesem Grund lohnt sich ein regelmäßiges Update. Da das Installationsskript (im ersten Teil beschrieben) für VSC ein eigenes Repository hinzufügt, läuft dieses Update nicht anders als das jedes anderen Programms auch. Das Programmpaket für den Editor heißt dabei schlicht code. Das Update der Plugins erfolgt am Betriebssystem vorbei; je nach Einstellung übernimmt die IDE das selbst oder fragt nach.

Einstieg

Für das Debugging gibt es ganz links in der Leiste ein eigenes Icon (Abbildung 2) mit einem Dreieck plus Käfer (englisch: bug). Es symbolisiert das Abspielen eines Programms im Debug-Modus. Klicken Sie es an, wechselt die IDE in eine neue Ansicht (Abbildung 3). Rechts verbleiben die Reiter mit dem Quellcode, in der Spalte links daneben finden Sie Daten zur aktuellen Debug-Session. Dazu gehören unter anderem die Variablen, die Register sowie die Haltepunkte.

Abbildung 2: Durch einen Klick auf das Icon mit dem Käfer schalten Sie in die Debug-Ansicht um.

Abbildung 2: Durch einen Klick auf das Icon mit dem Käfer schalten Sie in die Debug-Ansicht um.

Abbildung 3: In der Debug-Ansicht erscheint eine neue Spalte mit Daten zur aktuellen Debug-Session.

Abbildung 3: In der Debug-Ansicht erscheint eine neue Spalte mit Daten zur aktuellen Debug-Session.

Da VSC nicht wissen kann, ob Sie ein Programm auf dem RasPi oder dem Pico entwanzen wollen, stellen Sie das in der linken Spalte oben in der Ausklappliste neben dem grünen Dreieck ein. Praktischerweise legt der Projekt-Wizard die dafür notwendige Launch-Konfiguration automatisch an. Da es sich beim Prozessor auf dem Pico um eine Cortex-M0-CPU handelt, heißt sie Cortex Debug.

Ein Klick auf das grüne Dreieck startet anschließend das Debugging. Die IDE stößt zur Sicherheit einen Neubau des Programms an. Danach lädt es den Code auf den Pico und startet im Einzelschrittmodus. Durch die Low-Level-Initialisierung des Geräts müssen Sie sich nicht durchklicken, der Debugger bleibt aber automatisch am Anfang des Hauptprogramms (main()-Funktion) stehen (Abbildung 4).

Abbildung 4: Nach dem Start im Einzelschrittmodus stoppt das Programm bei der <code>main()</code>-Funktion.

Abbildung 4: Nach dem Start im Einzelschrittmodus stoppt das Programm bei der main()-Funktion.

Langsam, aber sicher

Von jetzt an navigieren Sie mit den oberhalb des Quellcodes eingeblendeten Pfeiltasten (Abbildung 5) durch das Programm. Ganz links gibt es einen Reset-Knopf für den Pico, danach folgen in Blau die Ablauftasten. Über die Icons ganz rechts können Sie dagegen neu starten oder das Debugging komplett abbrechen.

Abbildung 5: Im Debug-Modus navigieren Sie mithilfe der oberhalb des Codes eingeblendeten Icons oder mittels der Pfeiltasten.

Abbildung 5: Im Debug-Modus navigieren Sie mithilfe der oberhalb des Codes eingeblendeten Icons oder mittels der Pfeiltasten.

Welche Aktionen die blauen Icons starten, lässt sich an ihrer Form erahnen. Das erste (Abspielen) startet einfach den Programmablauf ab der aktuellen Stelle. Das zweite (Einzelschritt) führt die aktuelle Zeile aus. Handelt es sich dabei um einen Funktionsaufruf, führt VSC ihn komplett aus, ohne in die Funktion hineinzuspringen. Das nächste Icon führt ebenfalls die aktuelle Zeile aus, verzweigt aber gegebenenfalls in eine Funktion, die Sie dann im Einzelschrittmodus im Detail untersuchen können. Mit dem vierten blauen Icon springen Sie aus einer Funktion heraus. Das beschleunigt den Debug-Prozess, wenn Sie etwa aus Versehen in eine Funktion hineingesprungen sind oder den interessanten Teil bereits durchlaufen haben.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben