Hallo zusammen, JavaRush-Community. Heute sprechen wir über Debuggen: Was es ist und wie man in Intellij IDEA debuggt. Der Artikel richtet sich an Personen, die bereits über minimale Java Core-Kenntnisse verfügen. Es wird keine Frameworks oder komplexen Prozesse für die Veröffentlichung von Bibliotheken geben. Leichter Spaziergang. Machen Sie es sich also bequem und legen Sie los!
der Dokumentation der README-Datei, die im Stammverzeichnis des Projekts liegt, lesen wir: Erwartetes Verhalten – von allen Blüten, von denen Nektar gesammelt wird (als doppelter Wert), wird eine Menge Honig gesammelt, die der Hälfte entspricht der gesammelte Nektar. Das Projekt hat die folgenden Klassen:
der README-Datei der Dokumentation geschrieben steht, dass sich Nektar im Verhältnis 2 zu 1 in Honig verwandelt:
die README-Datei der Dokumentation einen Fehler enthält und aktualisiert werden muss. Aktualisieren wir die README-Datei:
Hub mit einem smarten Look lesen :)
Warum brauchen Sie Debug?
Machen wir es gleich klar: Es gibt keinen Code ohne Fehler... So funktioniert das Leben. Daher sollten wir nicht sofort schlapp machen und alles aufgeben, wenn der Code nicht wie erwartet funktioniert. Aber was soll man machen? Natürlich können Sie esSystem.out.println
überall dort einstellen, wo Sie können, und dann die Ausgabe im Terminal sortieren, in der Hoffnung, einen Fehler zu finden. Dennoch ist es möglich ... und sie tun es, und sie tun es sorgfältig mithilfe der Protokollierung (Sie können hier darüber lesen ). Wenn es jedoch möglich ist, den Code auf dem lokalen Computer auszuführen, ist es besser, Debug zu verwenden . Ich möchte gleich darauf hinweisen, dass wir uns in diesem Artikel mit dem Debuggen eines Projekts innerhalb von Intellij IDEA befassen. Wenn Sie mehr über Remote-Debugging erfahren möchten, finden Sie hier einen Artikel aus unserer Ressource .
Was ist Debug?
Beim Debuggen handelt es sich um den Prozess des Debuggens (Überprüfens) von Code, bei dem Sie während der Ausführung an einer bestimmten Stelle anhalten und den Fortschritt der Ausführung beobachten können. Verstehen Sie den Status des Programms an einem bestimmten Ort. Es ist genau das Gleiche, als ob man das Leben anhalten und alles von außen betrachten könnte. Cool, oder? Unser Ziel ist es, schnell und einfach zu lernen, wie man Anwendungen mit unserer bevorzugten Entwicklungsumgebung Intellij IDEA debuggt.Was Sie benötigen, um mit dem Debuggen zu beginnen
Ich gebe einen kostenlosen Rat: Machen Sie beim Lesen des Artikels alles, was hier beschrieben wird, zum Glück gibt es alles dafür. Was brauchen Sie:- Intellij IDEA-Entwicklungsumgebung Version 2019.3.1 und höher. Falls jemand es nicht hat, finden Sie hier einen Link , über den Sie es herunterladen können. Laden Sie die Community Edition herunter, denn diese werde ich verwenden.
- Klonen Sie das Projekt von GitHub und importieren Sie es über IDEA.
Ein bisschen Theorie... versprochen :D
Um ein wenig mit dem Debuggen zu beginnen, müssen Sie verstehen, was BreakPoint ist , und einige Hotkeys verstehen, die Sie für den Einstieg benötigen. BreakPoint ist eine spezielle Markierung, die den Ort oder Status anzeigt, an dem die Anwendung gestoppt werden soll. Sie können einen Haltepunkt festlegen, indem Sie entweder mit der linken Maustaste auf die linke Seitenleiste klicken oder auf die Codeposition klicken und Strg + F8 drücken . Es gibt drei Arten von Haltepunkten: Linienmarkierung, Variablenmarkierung und Methodenmarkierung. Es sieht aus wie das:-
Pro Zeile:
Wenn der Ausdruck ein Lambda enthält, bietet Ihnen IDEA die Wahl, den Ausdruck in die gesamte Zeile oder speziell in das Lambda einzufügen:
-
Pro Methode:
-
Pro Klasse
- Bee.java:24 – in der Bee-Klasse in Zeile 24
- Main.java:14 – in der Main-Klasse in Zeile 14
Lasst uns gehen, lasst uns in die Wildnis des Debuggens eintauchen
Da ich erblicher Imker bin, habe ich für die Debugging-Präsentation ein Projekt erstellt, das den Prozess des Sammelns von Nektar durch Bienen, der Verarbeitung von Nektar zu Honig und der Gewinnung von Honig aus dem Bienenstock beschreibt. Basierend auf- Biene – eine gewöhnliche Arbeiterbiene;
- BeeQueen – Bienenkönigin;
- BeeHive - Bienenstock;
- HoneyPlant – Honigpflanze, aus der Honig gewonnen wird;
- Main – Hier
public static void main()
befindet sich die Methode, mit der das Projekt startet.
main()
, stellt sich heraus, dass nicht nur die Honigmenge nicht gezählt wird, sondern auch ein Fehler auftritt ... Sie müssen sich ansehen, was da falsch ist. Anhand des Stack-Trace in der unteren rechten Ecke können wir sehen, dass in HoneyPlant.java:20
eine RuntimeException ausgelöst wird: Dies ist genau unser Fall: Es gibt eine RuntimeException. Fügen wir wie oben beschrieben eine Suche nach einer solchen Ausnahme hinzu und führen Sie main()
die Methode aus Debug-Modus. Klicken Sie dazu in Intellij IDEA auf den grünen Dreieckspfeil vor der Methode main()
: und wir erhalten das gestoppte Programm in dem Moment, bevor die Ausnahme mit diesem Symbol ausgelöst wird . Um vollständige Informationen zu erhalten, müssen Sie im Abschnitt „Debuggen“ nachsehen. Es verfügt über Variables , das alle in diesem Teil der Anwendung verfügbaren Variablen anzeigt:
- Nektar = 1,0;
- nectarCapacity = -1,0.
if ( nectar == 0 ) {
return 0;
}
Der Haken ist jedoch, dass die falsche Variable überprüft wird ... und das ist ein Fehler im Code. Anstatt den Wert von Nektar in der Blume zu überprüfen, der in der Variablen nectarCapacity steht , prüft das Programm den Wert von nectar , der in die Methode eingeht und die Menge darstellt, die dem Nektar entnommen werden soll. Hier ist er, der erste Fehler! Daher setzen wir es richtig und erhalten den Ausdruck:
if ( nectarCapacity == 0) {
return 0;
}
Als nächstes führen wir main()
die Methode im Normalmodus aus (Run `Main.main()`)
und es gibt keinen Fehler mehr, das Programm funktionierte: Die Anwendung funktionierte und gab die Antwort: „33,0 Honig wurde von 7 Bienen aus 2 Honigpflanzen produziert“ Alles wäre in Ordnung, aber die Antwort lautet falsch... Alles nur, weil in ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
Aus der Hauptmethode geht hervor, dass es zwei Honigpflanzen gibt, 30 bzw. 40 Einheiten Nektar, sodass Sie am Ende 35 Einheiten Honig erhalten sollten. Und er schreibt das 33. Wo sind die anderen beiden Einheiten geblieben? ... Jetzt werden wir es herausfinden! Dazu müssen wir einen Haltepunkt in der Methode Main.main()
in Zeile Nr. 28 setzen, wo sie ausgeführt wird, und die Methode im Debug-Modus beeHive.populateHoney()
ausführen : Schauen wir uns diesen Punkt genauer an. Das Programm stoppte, bevor die 28. Zeile ausgeführt wurde. Unten sehen wir den Abschnitt Debug, der alle Informationen zur laufenden Anwendung beschreibt. Der Variablenteil enthält, wie bereits erwähnt, alle Variablen und Objekte, auf die von diesem Teil der Anwendung aus zugegriffen werden kann. Der Frames-Teil zeigt die Schritte, die die Anwendung durchläuft. Sie können sich den vorherigen Schritt ansehen und alle lokalen Daten abrufen. Damit das Programm weiterarbeitet, können Sie F9 oder das grüne Symbol drücken, wie unten gezeigt: Um das Programm zu stoppen, müssen Sie auf das rote Quadrat klicken: Um die Anwendung im Debug-Modus neu zu starten, müssen Sie auf den Pfeil klicken: Um Schritt für Schritt durch die Anwendung zu gehen, können Sie anschließend zwei Tasten verwenden: main
- F8 – einen Codeabschnitt durchgehen und nicht auf interne Methoden eingehen;
- F7 – Gehen Sie einen Codeabschnitt durch und geben Sie interne Methoden ein.
beeHive.populateHoney()
, müssen wir daher F7 drücken, und wir machen weiter: Als nächstes durchlaufen wir den Debug-Modus mit F8 , wobei wir diese Methode bis zum Ende verwenden und beschreiben, was in dieser Methode passiert:
- Zeile 25 – Stream API wird verwendet, um Honig von allen Bienen zu sammeln;
- 26. Zeile – Honig wird zum vorhandenen hinzugefügt;
- 27. Zeile – 2 Einheiten Honig werden der Königin zugeteilt;
- 28. Zeile – diese beiden Einheiten werden von der Gesamthonigmenge abgezogen;
- Zeile 29 – die Gebärmutter frisst diesen Honig.
## Documentation
Presentation based on honey getting process.
**Note**:
* 1 honey point = 2 nectar points
* 2 honey point queen bee eats every time when beehive populates the honey.
Und das ist alles: Alle gefundenen Fehler wurden behoben, wir können in aller Ruhe weiter Kaffee trinken und Artikel auf dem JavaRush- Zusammenfassen
In diesem Artikel haben wir Folgendes herausgefunden:- Es gibt keine Arbeit ohne Fehler und das Debuggen ist eine großartige Möglichkeit, diese zu beheben.
- Was ist ein Haltepunkt und welche Arten gibt es?
- wie man einen Ausnahme-Haltepunkt konfiguriert;
- So navigieren Sie im Debug-Modus.
Artikel zum Lesen
- Das im Artikel verwendete Projekt
- IntelliJ IDEA und Debug: nicht tauchen, sondern schnorcheln
- Die bittere Wahrheit über das Programmieren...
- Offizielle Dokumentation
- Arten von Haltepunkten. Offizielle Dokumentation
- Wie aus einem Interviewtest eine Open-Source-Bibliothek wurde
- Erstellen eines Systems zur Überwachung der Flugticketpreise: eine Schritt-für-Schritt-Anleitung [Teil 1]
- Leitfaden zum Erstellen eines Clients für die Skyscanner-API und zum Veröffentlichen in jCenter und Maven Central [Teil 1]
- Protokollierung: Was, wie, wo und womit?
GO TO FULL VERSION