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!
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:
der Dokumentation wird Nektar im Verhältnis 2 zu 1 in Honig umgewandelt:
Dokumentation einen Fehler enthält und aktualisiert werden muss. Aktualisieren wir die README-Datei:
Stack Overflow CodeGym lesen :)
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önntenSystem.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:- 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.
- Klonen Sie dieses GitHub-Projekt und importieren Sie es über IDEA.
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:
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:
-
Zu einer Methode:
-
In einer Klasse:
- Bee.java:24 – in der Bee-Klasse in Zeile 24
- Main.java:14 – in der Main-Klasse in Zeile 14
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- 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.
main()
, stellen wir fest, dass unser Programm nicht nur die Honigmenge nicht berechnet, sondern auch eine Ausnahme auslöst ... Wir 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
: Das 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. Das Ergebnis ist, dass das Programm in dem Moment gestoppt wird, kurz bevor die Ausnahme ausgelöst wird, und wir sehen dieses Symbol: Um 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.
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: Die 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
## 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: Wir 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: Um das Programm zu stoppen, klicken Sie auf das rote Quadrat: Um die Anwendung im Debug-Modus neu zu starten, klicken Sie auf den Pfeil: Weiter 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.
beeHive.populateHoney()
Methode einzusteigen. Wenn wir hineingehen, erhalten wir Folgendes: Jetzt 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.
## 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 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
GO TO FULL VERSION