CodeGym/Java-Blog/Random-DE/Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger
John Squirrels
Level 41
San Francisco

Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger

Veröffentlicht in der Gruppe Random-DE
Hallo an alle in der CodeGym-Community! Lassen Sie uns heute über das Debuggen sprechen – was es ist und wie man in IntelliJ IDEA debuggt. Dieser Artikel richtet sich an Personen, die bereits über Mindestkenntnisse in Java Core verfügen. Es wird keine Frameworks oder komplizierten Verfahren zum Veröffentlichen von Bibliotheken geben. Ein gemütlicher Spaziergang. Machen Sie es sich also bequem und legen Sie los! Debuggen in IntelliJ IDEA: Ein Leitfaden für Einsteiger – 1

Warum Sie den Debug-Modus benötigen

Lassen Sie uns gleich etwas klarstellen: Es gibt keinen Code ohne Fehler ... So funktioniert das Leben. Wir sollten also nicht zusammenbrechen und aufgeben, wenn unser Code nicht wie erwartet funktioniert. Aber was sollen wir tun? Nun, wir könnten System.out.printlnüberall Anweisungen platzieren und dann die Konsolenausgabe durchsuchen, in der Hoffnung, einen Fehler zu finden. Das heißt, Sie können (und die Leute tun es auch) mithilfe einer sorgfältigen Protokollierung debuggen. Wenn Sie Ihren Code jedoch auf einem lokalen Computer ausführen können, ist es besser, den Debug- Modus zu verwenden. Ich möchte gleich darauf hinweisen, dass wir uns in diesem Artikel mit dem Debuggen eines Projekts mit IntelliJ IDEA befassen.

Was ist der Debug-Modus?

Der Debug-Modus dient zum Debuggen (Überprüfen) von ausgeführtem Code. Es ermöglicht Ihnen, die Ausführung an bestimmten Stellen anzuhalten und zu beobachten, wie sich die Dinge entwickeln. Dadurch können Sie den Status des Programms an einer bestimmten Stelle im Code verstehen. Es ist, als ob man die Uhr anhalten und alles von der Seite betrachten könnte. Cool, oder? Unser Ziel ist es, schnell und einfach zu lernen, wie man Anwendungen mithilfe unserer beliebten IntelliJ IDEA-Entwicklungsumgebung debuggt.

Was Sie benötigen, um mit dem Debuggen zu beginnen

Hier ein paar kostenlose Ratschläge: Machen Sie beim Lesen dieses Artikels alles, was hier beschrieben wird – Sie haben alles, was Sie tun müssen, um mitzumachen. Was du brauchst:
  1. IntelliJ IDEA Version 2019.3.1 oder höher. Falls jemand dies nicht hat, finden Sie hier einen Link, über den Sie es herunterladen können . Laden Sie die Community Edition herunter – das ist die Version, die ich verwenden werde.
  2. Klonen Sie dieses GitHub-Projekt und importieren Sie es über IDEA.
Öffnen Sie IDEA: Debuggen in IntelliJ IDEA: Ein Leitfaden für Einsteiger – 2Wählen Sie das Debug- Präsentationsprojekt aus und drücken Sie OK . Dann sehen Sie das folgende Fenster: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 3Belassen Sie die ausgewählten Optionen: Projekt aus externen Quellen und Maven importieren . Klicken Sie auf Fertig stellen . Nachdem wir das Projekt importiert haben, können wir den weiteren Prozess anhand eines lebendigen Beispiels beschreiben.

Nur ein bisschen Theorie... versprochen :D

Um auch nur ein wenig mit dem Debuggen beginnen zu können, müssen Sie verstehen, was ein Haltepunkt ist, und mit einigen Tastenkombinationen vertraut sein. Ein Haltepunkt ist eine spezielle Markierung, die angibt, wo die Ausführung der Anwendung angehalten werden soll, möglicherweise basierend auf dem Anwendungsstatus. Sie können einen Haltepunkt festlegen, indem Sie entweder mit der linken Maustaste auf das linke Seitenfeld klicken oder auf die Codeposition klicken und Strg+F8 drücken . Schauen wir uns drei Arten von Haltepunkten an: Zeilenhaltepunkte, Feldüberwachungspunkte und Methodenhaltepunkte. So sieht es aus:
  • Auf einer Zeile:

    Debuggen in IntelliJ IDEA: Ein Leitfaden für Einsteiger – 4

    Wenn eine Anweisung einen Lambda-Ausdruck hat, werden Sie von IDEA aufgefordert, auszuwählen, ob der Haltepunkt auf die gesamte Anweisung oder speziell auf den Lambda-Ausdruck gesetzt werden soll:

    Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 5
  • Zu einer Methode:

    Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 6
  • In einer Klasse:

    Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 7
Haltepunkte können entfernt werden, indem Sie die gleichen Schritte wie beim Hinzufügen ausführen. Es gibt Situationen, in denen Sie sie deaktivieren (stummschalten) möchten. Suchen Sie dazu das Debuggen in IntelliJ IDEA: Ein Leitfaden für Einsteiger – 8Symbol im Abschnitt „Debuggen“. Dadurch werden alle Haltepunkte stummgeschaltet. Um zu sehen, welche Haltepunkte festgelegt wurden, können Sie entweder zum Abschnitt „Debuggen“ in der unteren linken Ecke gehen und das Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 9Symbol suchen oder Strg+Umschalt+F8 drücken : Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 10Wenn wir zur Liste der Haltepunkte wechseln, sehen wir Folgendes: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 11Es gibt zwei Haltepunkte Hier:
  • Bee.java:24 – in der Bee-Klasse in Zeile 24
  • Main.java:14 – in der Main-Klasse in Zeile 14
Bitte beachten Sie, dass diese Haltepunkte nicht automatisch festgelegt werden, wenn Sie das Projekt geklont haben: Sie müssen sie selbst festlegen! Es gibt auch einen Abschnitt mit Java-Ausnahme-Haltepunkten . Es ist sehr nützlich. Hier können Sie einen impliziten Haltepunkt hinzufügen, damit das Programm stoppt, bevor eine Ausnahme oder eine bestimmte Ausnahme ausgelöst wird. Wir fügen einen impliziten Haltepunkt für RuntimeException hinzu. Dies ist einfach zu bewerkstelligen. Suchen Sie das „+“-Symbol in der oberen linken Ecke. Klicken Sie darauf und wählen Sie „Java Exception Breakpoints“ aus : Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 12Geben Sie im angezeigten Fenster den Namen der Ausnahme ein, die Sie hinzufügen möchten, wählen Sie sie aus der Liste aus und klicken Sie auf „ OK “. Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 13Damit ist unsere Einführung in die Einrichtung abgeschlossen. Jetzt sind wir fertig. Ich werde noch etwas üben.

Lasst uns dieses Ding namens Debuggen machen!

Ich stamme aus einer Familie von Imkern mit langer Tradition. Das Projekt, das ich zur Veranschaulichung des Debuggens erstellt habe, beschreibt daher modellhaft den Prozess, bei dem Bienen Nektar sammeln, Nektar zu Honig verarbeiten und dann Honig aus dem Bienenstock holen. Laut der Dokumentations- README-Datei, die im Stammverzeichnis des Projekts zu finden ist, ist das erwartete Verhalten aller Blumen, von denen Nektar gesammelt wird, dass die Menge des gesammelten Honigs (die die Form eines Doubles annimmt ) gleich der Hälfte von ist der gesammelte Nektar. Das Projekt hat die folgenden Klassen:
  • Biene – eine gewöhnliche Arbeiterbiene
  • BeeQueen – die Bienenkönigin
  • BeeHive – der Bienenstock
  • HoneyPlant – eine Honigpflanze (Nektarquelle), aus der Nektar gesammelt wird
  • Main – hier finden wir public static void main()die Methode, mit der die Ausführung beginnt.
Wenn wir die Methode ausführen main(), stellen wir fest, dass unser Programm nicht nur die Honigmenge nicht berechnet, sondern auch eine Ausnahme auslöst ... Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 14Wir müssen das Problem untersuchen und ermitteln. Aus dem Trace-Stack in der unteren rechten Ecke können wir erkennen, dass eine RuntimeException ausgelöst wurde bei HoneyPlant.java:20: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 15Das ist genau das, worüber wir oben gesprochen haben. Achten wir auf diese RuntimeException, indem wir die main()Methode im Debugmodus ausführen. Klicken Sie dazu in IntelliJ IDEA auf den grünen Dreieckspfeil neben der main()Methode. Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 16Das Ergebnis ist, dass das Programm in dem Moment gestoppt wird, kurz bevor die Ausnahme ausgelöst wird, und wir sehen dieses Symbol: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 17Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 18Um alle verfügbaren Informationen zu erhalten, müssen wir im Abschnitt „Debuggen“ nachsehen. Es hat VariablenBereich, der alle in diesem Teil der Anwendung verfügbaren Variablen anzeigt:
  • Nektar = 1,0;
  • nectarCapacity = -1,0.
Das Auslösen der Ausnahme ist sinnvoll, da eine Honigpflanze keine negative Menge an Nektar haben kann. Aber warum passiert das? Schließlich prüfen wir in den Zeilen 15-17, ob der Nektarvorrat erschöpft ist und geben Null zurück, wenn:
if (nectar == 0) {
   	     return 0;
}
Das Problem ist jedoch, dass wir die falsche Variable prüfen. Dies ist ein Fehler im Code. Anstatt die in der Blüte verfügbare Nektarmenge zu prüfen (die in der Variable nectarCapacity gespeichert ist), prüft das Programm den Wert des Nektarparameters der Methode , der die Menge an Nektar angibt, die wir der Blüte entnehmen möchten. Hier ist es! Unser erster Fehler! Nachdem wir dies behoben haben, erhalten wir den folgenden Code:
if (nectarCapacity == 0) {
   	     return 0;
}
Führen Sie nun die main()Methode wie gewohnt aus (Run 'Main.main()'). Es wird keine Ausnahme ausgelöst und das Programm funktioniert: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 19Die Anwendung wird vollständig ausgeführt und gibt die folgende Antwort aus:
"33.0 honey was produced by 7 bees from 2 honey plants"
Jetzt wäre alles in Ordnung, aber diese Antwort ist falsch ... Laut der README-Datei der Dokumentation wird Nektar im Verhältnis 2 zu 1 in Honig umgewandelt:
## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Bei der Hauptmethode handelt es sich eindeutig um zwei Honigpflanzen mit jeweils 30 bzw. 40 Einheiten Nektar. Am Ende dürften also 35 Einheiten Honig übrig bleiben. Aber das Programm sagt uns, dass wir 33 bekommen. Wo sind die anderen beiden Einheiten geblieben? Lass es uns herausfinden! Setzen Sie dazu einen Haltepunkt in der Main.main()Methode in Zeile 28, wo beeHive.populateHoney()aufgerufen wird, und führen Sie die main()Methode im Debug-Modus aus: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 20Wir werden diesen Punkt genauer betrachten. Das Programm hat die Ausführung gestoppt, bevor Zeile 28 ausgeführt wurde. Im unteren Teil sehen wir den Abschnitt Debug, der alle verfügbaren Informationen über die laufende Anwendung anzeigt. Wie bereits erwähnt, enthält der Bereich „Variablen“ alle Variablen und Objekte, die in diesem Teil der Anwendung verfügbar sind. Im Frames-Bereich werden die Schritte angezeigt, die die Anwendung durchläuft. Sie können sich frühere (Frames-)Schritte ansehen und alle lokalen Daten sehen. Um das Programm weiter auszuführen, können Sie F9 oder das grüne Symbol drücken, wie unten gezeigt: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 21Um das Programm zu stoppen, klicken Sie auf das rote Quadrat: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 22Um die Anwendung im Debug-Modus neu zu starten, klicken Sie auf den Pfeil: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 23Weiter können Sie mit dem fortfahren Anwendung Schritt für Schritt mit zwei Tasten:
  • F8 – Durchlaufen Sie den Code, ohne in Methoden einzusteigen.
  • F7 – Code schrittweise durchgehen und Methoden aufrufen.
In unserem Fall müssen wir F7 drücken, um in die beeHive.populateHoney()Methode einzusteigen. Wenn wir hineingehen, erhalten wir Folgendes: Debuggen in IntelliJ IDEA: ein Leitfaden für Einsteiger – 24Jetzt verwenden wir F8, um diese Methode schrittweise durchzugehen und zu beschreiben, was darin passiert:
  • Zeile 25 – Die Stream-API wird verwendet, um Nektar von allen Bienen zu sammeln
  • Zeile 26 – Der neu erzeugte Honig wird dem vorhandenen Honig hinzugefügt;
  • Zeile 27 – 2 Einheiten Honig werden der Königin zugeteilt
  • Zeile 28 – Diese beiden Einheiten werden von der Gesamthonigmenge abgezogen
  • Zeile 29 – Die Königin isst diesen Honig.
Dorthin gingen also die beiden fehlenden Einheiten! Hurra! Nach einem Gespräch mit einem Geschäftsanalysten kommen wir zu dem Schluss, dass die README-Datei der Dokumentation einen Fehler enthält und aktualisiert werden muss. Aktualisieren wir die README-Datei:
## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Wir sind fertig. Wir haben alle gefundenen Fehler behoben. Wir können ruhig mit einem selbstgefälligen Blick weitermachen, einen Kaffee trinken und Artikel auf Stack Overflow CodeGym lesen :)

Fassen wir zusammen

In diesem Artikel haben wir gelernt:
  • In jeder Arbeit gibt es Fehler, und das Debuggen ist eine großartige Möglichkeit, diese zu beheben
  • Was ein Haltepunkt ist und welche Arten von Haltepunkten es gibt
  • So legen Sie einen Ausnahme-Haltepunkt fest
  • wie man den Code im Debug-Modus schrittweise durchgeht

Artikel zum Lesen

Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare