Als Entwickler ist es notwendig, Debugging -Fähigkeiten in der Entwicklungsumgebung zu meistern. Beim Schreiben von Java -Programmen stoßen wir häufig auf verschiedene unerklärliche Probleme. Um festzustellen, wo das Programm problematisch ist, müssen wir häufig Protokolle hinzufügen, um den Wert von Variablen zu erkennen. Daher ist das Debuggen sehr problematisch. Angenommen, ich verbringe 1 Stunde am Tag damit, meine Bewerbung zu debuggen. Es wird viel Zeit, wenn sie sich ansammelt. Verwenden Sie diese Zeit aus diesem Grund, um alle Funktionen zu schätzen und zu verstehen, die uns bequemer debuggen. Das kann Ihnen einige Zeit ersparen und Ihr Leben auch komfortabler und entspannter macht.
1.. Debug -Ansicht
Die am häufigsten verwendeten Fenster beim Debuggen sind:
| Fenster | veranschaulichen |
|---|---|
| Debuggefenster | Zeigt hauptsächlich den aktuellen Thread -Methode -Call -Stack sowie die Anzahl der Codezeilen an (Code mit Debugging -Informationen) |
| Breakpoints -Fenster | => Breakpoint List -Fenster, das das Hinzufügen von Haltepunkten, das Einstellen von Haltepunktbedingungen, Löschen von Haltepunkten usw. erleichtern kann. |
| Variablenfenster | => Zeigen Sie die lokale Variable der aktuellen Methode an, die nicht statische Methode, einschließlich dieser Anwendung, den Wert der Variablen ändern und ändern kann |
| Code -Bearbeitungsfenster | => Unnötig zu sagen mehr |
| Konsolenfenster ausgeben | => Protokolle und andere Ausgabeinhalte. Während des Debuggens können Sie die Aufmerksamkeit der Komponenten auf etwas niedriger einstellen, um mehrere Ausgangsinformationen zu erhalten. |
Zusätzlich sind Hilfsfenster:
| Fenster | veranschaulichen |
|---|---|
| Ausdrucksausdrucksfenster | => Schreiben Sie den Ausdruck der Daten, die Sie beobachten müssen, oder den Wert des Messgeräts zu ändern |
| Fenster anzeigen | => Kann Codeblöcke ausführen, Inhalt ausgeben usw. in der Anzeige |
| Umrissfenster | => Zeigen Sie die Methoden, Variablen usw. der aktuellen Klasse an |
| Geben Sie Hierarchiefenster ein | => Überprüfen Sie die Vererbungsstufe der aktuellen Klasse, einschließlich Implementierungsoberflächen und Klassenvererdenstufen |
| Methode Call Relation Call Hierarchiefenster | => Überprüfen Sie, welche Methoden aufgerufen werden, welche Klassen aufgerufen werden und welche Zeile die entsprechende Methode direkt geöffnet werden kann |
| Suchergebnissesuchefenster | => Kombinieren Sie Verknüpfungsschlüssel, Sie können die Codepositionen anzeigen, auf die in den Arbeitsbereich, Projekt- und Arbeitssätzen verwiesen oder definiert werden. |
1) Vollständige Ansicht des Fensters:
2) Debug -Ansicht (Thread -Stack -Ansicht):
Mit der Debug -Ansicht können Sie das Programm verwalten, das auf der Workbench debugge und auf der Workbench ausgeführt wird. Es zeigt die Stapelrahmen der Threads, die in dem Programm, das Sie debuggen, aufgehängt, und jeder Thread im Programm wird als Knoten des Baumes angezeigt. Er zeigt den Prozess für jedes Ziel, das ausgeführt wird. Wenn der Faden suspendiert ist, wird sein Stapelrahmen als untergeordnetes Element angezeigt. Hier sind einige häufig verwendete Debug -Schaltflächen:
1. Zeigt an, dass die aktuelle Implementierung bis zum nächsten Haltepunkt weiter ausgeführt wird und der Abkürzungschlüssel F8 ist.
2. Es bedeutet, den gesamten Prozess zu unterbrechen
3. Es bedeutet, die aktuelle Methode einzugeben, und der Abkürzungschlüssel ist F5.
4. Es bedeutet, dass die nächste Codezeile ausgeführt wird, und der Abkürzungschlüssel ist F6.
5. Es bedeutet, die aktuelle Methode zu verlassen und zur aufrufenden Ebene zurückzukehren. Der Abkürzungschlüssel ist F7.
S.
Detaillierte Einführung:
Überspringen Sie alle Haltepunkte: Stellen Sie alle Haltepunkte auf übersprungen. Nachdem Sie alle Haltepunkte überspringen, wird alle Haltepunkte ein Schrägstrich vorhanden, der darauf hinweist, dass der Haltepunkt übersprungen wird und der Thread nicht am Haltepunkt suspendiert wird.
Drop to Frame: Mit diesem Befehl kann das Programm zum Beginn der aktuellen Methode zurückkehren und die Ausführung erneut starten. Sie können den Java-Stack-Rahmen erneut ausführen. Sie können einen angegebenen Stack-Frame auswählen und dann auf Drop auf Frame klicken, damit Sie den angegebenen Stack-Frame erneut eingeben können. Achten Sie auf die Verwendung von Drop to Frame:
1. kann nicht in die Methode im bereits ausgeführten Method -Stack fallen.
2. Beim Einbruch in den Stapelrahmen wird der ursprüngliche Wert der globalen Daten nicht geändert. Beispielsweise wird ein Verschiebung, der Elemente enthält, nicht gelöscht.
Schrittfilter: Diese Funktion ist relativ einfach. Wenn wir einige Klassen ignorieren möchten, auf die wir beim Debuggen nicht achten, können wir Schrittfilter für die Filterung aktivieren. Das Programm wird weiterhin ausgeführt, bis eine ungefütterte Position oder ein Haltepunkt auftritt. Die Funktion "Schrittfilter" besteht aus vier Elementen: Verwenden Sie Schrittfilter, Schrittfilter, Filtertyp und Filterpaket. Die spezifischen Operationen sind wie folgt:
Schritt 1: Windows -> Einstellungen -> Java -> Debug -> Schrittfilterung.
Schritt 2: Wählen Sie 'Schrittfilter verwenden'
Schritt 3: Wählen Sie die gewünschte Option auf dem Bildschirm aus. Sie können einen Teil des Codes in Ihrer eigenen Codebasis hinzufügen.
Schritt 4: Klicken Sie auf "Bewerben".
Im Prinzip wird der Befehl mit dem Schrittfilter bearbeiten, um Schrittfilterregeln zu konfigurieren, während das Filtertyp und das Filterpaket auf gefilterte Java -Typen bzw. Java -Paket beziehen.
Stufenrückgabe: Absprung aus der aktuellen Methode. Während der Ausführung der aufgerufenen Methode wird die Verwendung der Stufenrendite aus der Methode herausgesprungen und kehrt zu der Methode zurück, die die Methode aufruft, nachdem der gesamte Code der aktuellen Methode ausgeführt wurde.
Schritt überschreiten: Bei der Ausführung eines einzelnen Schritts wird bei der Begegnung einer Unterfunktion in der Funktion nicht die Unterfunktion eingetragen, um einen einzelnen Schritt auszuführen, sondern die gesamte Ausführung der Unterfunktion stoppt, dh die gesamte Unterfunktion wird als einen Schritt aufgenommen.
Sehen Sie sich ein: Schritt in: Schritt in: Eingeben, eingeben und weitermachen, wenn Sie auf eine Unterfunktion stoßen.
Lebenslauf: Wiederherstellung des pausierten Fadens und direkt von der aktuellen Position zur nächsten Haltepunktposition.
Suspend: Pause den ausgewählten Thread und Sie können den Code durchsuchen oder ändern, die Daten usw. überprüfen.
Eclipse unterstützt Thread -Suspendierung und -verbesserung durch Suspend und Lebenslauf. Im Allgemeinen ist Suspend für das Debuggen von Multi-Thread-Programmen geeignet. Wenn wir den Stapelrahmen und die variablen Werte eines bestimmten Threads anzeigen müssen, können wir den Thread durch den Befehl suspends aussetzen. Der Lebenslauf wird zur Wiederherstellung verwendet.
Es gibt zwei Arten von Lebenslauf, die Aufmerksamkeit benötigen:
Die erste besteht darin, den Programmcode während des Debugging -Prozesses zu ändern, ihn zu speichern und auf Lebenslauf zu klicken. Das Programm wird vorübergehend am Haltepunkt ausgesetzt.
Die zweite ist, dass, wenn das Programm eine Ausnahme ausführt, ein Lebenslauf ausführen und das Programm auch vorübergehend am Haltepunkt ausgesetzt werden.
Kündigung: Die Eclipse beendet das Debuggen lokaler Programme durch den Befehl enden.
Trennung: Eclipse verwendet den Befehl trennen, um Socket -Verbindungen zu Remote -JVMs zu beenden.
1. Debuggen und Ausführung
| markieren | Funktion | Kurzschlussschlüssel | beschreiben |
|---|---|---|---|
| 6.4 | Schrittinfo | F5 | -> Schritt in (wenn es einen Methodenaufruf gibt, wird die Aufrufmethode zum Debuggen eingegeben). |
| 6.4 | Überschreiten | F6 | -> Schritt für Schritt überspringen (in einem Methodenaufruf, der die Zeile nicht eingibt, führen Sie die aktuelle Codezeile direkt aus und springen Sie in die nächste Zeile). |
| 6.4 | Stiefretufe | F7 | -> In einem einzigen Schritt zurückkehren (Führen Sie die aktuelle Methode aus, platzen Sie die aktuelle Methode aus dem Anrufstapel aus und kehren Sie zum Anrufstandort zurück, an dem die aktuelle Methode aufgerufen wird). |
| 6.5 | Wieder aufnehmen | F8 | -> Nebt die normale Ausführung fort (bis der nächste Haltepunkt auftritt); |
| 7.4 | Rennen zur Linie | Strg+r | -> Ausführen in die aktuelle Zeile (alle Haltepunkte in der Mitte werden ignoriert und in die Zeile ausführen, in der sich der aktuelle Cursor befindet); |
| 6.3 | Fallen zum Rahmen | keiner | -> Zurück auf den Beginn der angegebenen Methode ist diese Funktion ziemlich gut. Klicken Sie mit der rechten Maustaste auf die Methode-Call-Stack auf eine Methode und wählen Sie Drop zum Frame aus, um sie vom Beginn der Methode auszuführen, z. B. diese Methode erneut ausführen. Sie können Drop zum Rahmen dieser Methode verwenden, um sie aus der ersten Zeile dieser Methode erneut auszusetzen. Für Methoden mit Nebenwirkungen wie Datenbankoperationen, Änderungen des Objektinhalts der übergebenen Parameter usw. kann natürlich den Inhalt des gewünschten Inhalts erneut ausgesetzt werden. |
| 6.1+6.2 | Stapel kopieren | keiner | -> Kopieren Sie die aktuellen Thread -Stapel -Informationen |
Wenn Sie beim Debuggen einige Klassen, Pakete usw. ausschließen müssen, können Sie die Einstellungen für Schrittfilter bearbeiten.
Die Eigenschaften von A6: Java -Prozess -Startinformationen, einschließlich Konsolenstartparameter, Umgebungsparameter usw. Wenn es Probleme mit den Parameter -Startparametern gibt, können Sie zunächst prüfen, ob die tatsächlichen Startparameter hier falsch sind. Sie können auch die entsprechenden Optionen für virtuelle Maschinen anzeigen, um das Debuggen zu unterstützen.
2. Daten anzeigen
| markieren | Funktion | Kurzschlussschlüssel | beschreiben |
|---|---|---|---|
| 7.4 | Überprüfen | Strg+Verschiebung+i | -> Zeigen Sie die ausgewählte Variable, den Ausdruckswert oder die Ausführungsergebnis an und drücken Sie erneut Strg+Shift+I, um den aktuellen Ausdruck oder den Wert zum Ausdruckfenster zur Anzeige hinzuzufügen. |
| 7.4 | Anzeige | Strg+Verschiebung+d | -> Zeigen Sie das ausgewählte Ergebnis der Variablen, des Ausdruckswerts oder des Ergebniss an. Drücken Sie STRL+Shift+D erneut, um den aktuellen Ausdruck oder den Wert zum Anzeigenfenster hinzuzufügen. |
| 7.4 | Ausführen | Strg+u | -> Auswahlausdruck ausführen; |
| 7.4 | Rennen zur Linie | Strg+r | -> Ausführen in die aktuelle Zeile (alle Haltepunkte in der Mitte werden ignoriert und in die Zeile ausführen, in der sich der aktuelle Cursor befindet); |
| 7.3 | Alle Fälle | Strg+Verschiebung+n | -> Alle Objekte der ausgewählten Klasse anzeigen, diese Funktion ist ausgezeichnet. |
| 7.3 | Instanzzahl | keiner | -> Die Anzahl aller Objekte in der ausgewählten Klasse anzeigen; |
| 7.4 | Betrachten | keiner | -> Fügen Sie die aktuelle Variable und den Ausdruck zum Fenster aus dem Ausdruck hinzu. |
3) Variablenansicht (Variable Ansicht)
1. Für die Variablennamenansicht zeigen Sie alle Instanzvariablen und lokalen Variablen an, auf die in der aktuellen Codezeile zugegriffen werden kann.
2. Zeigen Sie alle Variablenwerte an
3.. Der variable Wert kann durch dieses Fenster geändert werden
Die Variablenansicht zeigt Variableninformationen an, die sich auf den in der Debug -Ansicht ausgewählten Stack -Frame beziehen. Beim Debuggen von Java -Programmen können Variablen auswählen, um detailliertere Informationen im Detailbereich anzuzeigen. Darüber hinaus können Java -Objekte auch die Werte der von ihnen enthaltenen Eigenschaften anzeigen. Wählen Sie die Variable in diesem Fenster aus und klicken Sie mit der rechten Maustaste darauf, um viele Vorgänge auszuführen. Die Hauptvorgänge sind wie folgt:
Alle Instanzen: Öffnen Sie ein Dialogfeld, um alle Instanzen der Java -Klasse anzuzeigen. Die Verwendung dieser Funktion erfordert, dass die java -virtuelle Maschine das Instanzabruf unterstützt.
Alle Referenzen :: Öffnen Sie ein Dialogfeld, um alle Java -Objekte anzuzeigen, die die Variable verweisen.
Ändern Sie den Wert :: Ändern Sie den Wert der Variablen. Diese Funktion kann in Verbindung mit Drop -to -Frame -Debugging verwendet werden. Verwenden Sie diese beiden Funktionen anstatt neu zu entfernen
Variablen kopieren: Kopieren Sie den Wert einer Variablen, insbesondere wenn der Wert der Variablen sehr lang ist (z. B. JSON -Daten), diese Funktion ist nützlich.
Finden Sie: Manchmal können Sie suchen, wenn es viele Variablen in einer Klasse gibt, suchen Sie.
4) Breakpoints Ansicht (Haltepunktansicht)
1. Zeigen Sie alle Haltepunkte
2. Der ausgewählte Port in aktuellem Fenster 1 ungültig machen und erneut auf Aktivieren klicken.
3. Exception -Breakpoint
Die Ansicht von Breakpoints listet alle Breakpoints auf, die Sie im aktuellen Arbeitsintervall festgelegt haben. Doppelklicken Sie auf den Haltepunkt, um den Speicherort des Haltepunkts in das Programm einzugeben. Sie können auch Breakpoints aktivieren oder deaktivieren, löschen, neue hinzufügen und sie basierend auf Arbeitsgruppen oder Punkte -Hit -Zählungen gruppieren. Es gibt zwei Techniken, die bei der Verwendung von Haltepunkten sehr nützlich sind:
Hit Count: Es gibt an, wie oft das Codesegment an einem Haltepunkt ausgeführt wird. Das typischste ist eine Schleife. Wenn eine Schleife 10 -mal ausgeführt werden und der Thread ausgesetzt ist, beträgt der Hit -Count -Wert 10 und die aktuelle Schleife hängt, wenn er am 9. ausgeführt wird.
Bedingung: Wie der Name schon sagt, handelt es sich um ein bedingtes Urteil. Wenn wir beispielsweise die Variable i == 10 schleifen müssen, wird der Thread ausgesetzt, dann wird die Bedingung auf i == 10 gesetzt und Suspend auswählen, wenn "wahr".
Wenn beide Trefferzählungen und Bedingungen oben ausgewählt werden, ist es ungültig, wenn die Ausdrucks- und Werteinstellungen unangemessen sind. Wenn Sie Suspend auswählen, wenn sich der Wert ändert, kann die Bedingung hängen, wenn sich der variable Wert ändert.
5) Ausdrücke Ansicht (Expressionsansicht)
1. Ausdrücke
2. Klicken Sie hier, um einen neuen Ausdruck hinzuzufügen
Um den Wert eines Ausdrucks im Editor der Debug -Perspektive zu ermitteln, wählen Sie die gesamte Linie mit den Breakpoints Set aus und wählen Sie die Option "Inspizieren" im Kontextmenü. Der Ausdruck wird im Kontext des aktuellen Stapelrahmens bewertet, und das Ergebnis wird in der Ausdrückungsansicht des Anzeigefensters angezeigt. Wenn ich beispielsweise den Wert der Variablen A+B berechnen möchte, kann ich der Expressionsansicht einen Ausdruck hinzufügen: A+B
6) Anzeigeansicht
Sie können diese Ansicht verwenden, um einen neuen Code einzugeben oder zu berechnen. Dieser Code wird im Kontext des aktuellen Debug -Standorts ausgeführt, was bedeutet, dass Sie alle Variablen und sogar Inhaltsassistenten verwenden können. Um Ihren Code auszuführen, markieren Sie ihn einfach und verwenden Sie das Rechtsklickmenü oder Strg+u (ausführen) oder Strg+Shift+I (überprüfen)
7) Hilfsfenster des Code anzeigen
1. Codeansicht:
Codeansicht, verwendet, um einen bestimmten Code anzuzeigen. Der grüne Teil bezieht sich auf den Code, der derzeit ausgeführt wird
| markieren | Funktion | Kurzschlussschlüssel | beschreiben |
|---|---|---|---|
| 11.1 ~ 11.5 | Schnelle Typhierarchie | Strg+t | Überprüfen Sie die Vererbungsstufe der aktuellen Klasse und Schnittstelle. Beim standardmäßigen Eintritt wird die Unterklasse der Erbschaft/Implementierung der aktuellen Klasse/Methode angezeigt, und das Unterabschnitt 11.1 wird angezeigt. STRL+T Noch wird die Superklasse/Schnittstelle 11.2 Vererbung/Implementierung der aktuellen Klasse und Schnittstelle angezeigt. Während des Debuggens wird diese Funktion häufig verwendet, um die Implementierungsklasse 11.4 auf dem Methode Call der Schnittstelle oder abstrakte Klasse anzuzeigen und direkt zur entsprechenden Implementierungsmethode 11.5 zu navigieren. |
| Schnelle Umrisse | Strg+o | Schauen Sie sich den Umriss der aktuellen Klasse an, einschließlich Methoden, Attributen usw.; es ist wenig nützlich; | |
| Offene Erklärungen | F3 | Sehen Sie sich die Definitionen von Variablen, Eigenschaften und Methoden an |
2. Rufen Sie Hierarchiefenster:
| markieren | Funktion | Kurzschlussschlüssel | beschreiben |
|---|---|---|---|
| 12.1 ~ 12.2 | Öffnen Sie die Anrufhierarchie | Strg+Alt+h | Überprüfen Sie die Methode, die als Ebene bezeichnet wird. Sie können sehen, wo die aktuelle Methode 12.1 bezeichnet wird, oder die aktuelle Methode ruft andere Klassen von Methoden 12.2 auf |
3. Typ Hierarchiefenster:
| markieren | Funktion | Kurzschlussschlüssel | beschreiben |
|---|---|---|---|
| 13.1 ~ 13.4 | Offene Typhierarchie | F4 | Überprüfen Sie die Vererbungsstufe. Sie können die Erbschaftsstufe der Klasse einschließlich der übergeordneten Klasse 13.1 der untergeordneten Klasse oder der von der Klasse implementierten Schnittstellenerbranzebene 13.2 anzeigen. Der Umriss der Klasse 13.3 und 13.4 wird rechts gemäß der ausgewählten Klasse/Schnittstelle angezeigt. 13.3 kann auswählen, ob die Eigenschaften, Methoden usw. der übergeordneten Schnittstelle/übergeordnete Schnittstelle angezeigt werden sollen. |
4. Suchfenster:
| markieren | Funktion | Kurzschlussschlüssel | beschreiben |
|---|---|---|---|
| 14.1 | Erklärungen | Strg+g | Die gleiche Methodensignatur ist im Arbeitsbereich und im Drittanbieter-JAR-Paket 14.1 definiert |
| 14.2 | Referenzen | Strg+Shif+g | Die derzeit ausgewählten Variablen, Eigenschaften und Methoden werden im Arbeitsbereich und im JAR-Paket von Drittanbietern 14.2 verwiesen |
| 14.3 | Strg+Verschiebung+u | Zeigen Sie, wo Variablen, Eigenschaften und Methoden in der aktuellen Klasse 14.3 erscheinen | |
| 14.4 | Geräte | Ansicht der Klasse 14.8, die die aktuelle Schnittstelle implementiert | |
| 14.4 ~ 14,7 | Anzeigemethode | Sie können verschiedene Anzeigemethoden auswählen und das Bild für Details sehen |
2. Debuggen
1. Setzen Sie den Haltepunkt
In der Quellcodedatei in der markierten Zeile vor der Codezeile, die Sie den Haltepunkt festlegen möchten, doppelklicken Sie auf die Schaltfläche Linksmau, um den Haltepunkt festzulegen, und doppelklicken Sie erneut an derselben Position, um den Haltepunkt abzubrechen. Manchmal haben wir dieses Bedürfnis immer noch, das heißt, ich möchte keine Codezeile nach Zeile ausführen. Zum Beispiel wird A für die Schleife mehr als das 1.000 -fache schleifen. Ich möchte nur den Thread zum Debuggen am 500. Mal hängen lassen. Zu diesem Zeitpunkt können wir bedingte Haltepunkte verwenden. Setzen Sie Bedingungsbestandteile: Wir können Triggerbedingungen für diesen Haltepunkt festlegen. Sobald ein bestimmter Zustand erfüllt ist, können wir mit dem Debuggen beginnen. Sie können mit der rechten Maustaste auf den Breakpoint klicken und die Breakpoint-Eigenschaften auswählen, um die Seite der Breakpoint-Einstellungen einzugeben. Als wir über die Breakpoint -Sichtweise sprachen, lernten wir die Verwendung von Trefferzählern und Bedingung. Hier können wir die Bedingungen und die Anzahl der Ausführungen festlegen.
1.1) Haltepunkttyp und Haltepunktfenster
Es gibt fünf Arten von Haltepunkten, die beim Debuggen festgelegt werden können:
1.. Zeilenumbrüche: Bedingte Breakpoints sind, wie der Name schon sagt, Brechungspunkte mit bestimmten Bedingungen. Nur wenn die vom Benutzer festgelegten Bedingungen erfüllt sind, wird der Code gestoppt, wenn er zum Haltepunkt läuft.
2. Methoden -Haltepunkte: Das Besondere an den Haltepunkten der Methode ist, dass sie im Quellcode von JDK getroffen werden können. Da JDK die Debugging -Informationen während der Kompilierung beseitigt, können gewöhnliche Haltepunkte nicht im Inneren getroffen werden, aber Methoden -Haltepunkte sind möglich. Sie können den Anrufstapel der Methode über diese Methode anzeigen.
3.. Beobachten Sie Breakpoints (Watch Breakpoints-Member Variable Access Change).
4. Exception Breakpoints
5. Klassenlastbrüschempunkte
Die Einstellungen jedes Haltepunkts sind geringfügig unterschiedlich. Sie können mit der rechten Maustaste auf die Breakpoint -> Breakpoint -Eigenschaften klicken, um sie festzulegen, aber im Allgemeinen befindet sich im Haltepunktfenster eine schnelle Einstellungsschnittstelle. In den Breakpoint -Eigenschaften gibt es mehr Filter, was eigentlich ziemlich nutzlos und nicht sehr nützlich ist.
Breakpoint-bezogene Verknüpfungsschlüssel:
| Kurzschlussschlüssel | veranschaulichen |
|---|---|
| Strg+Verschiebung+b | Großer Breakpoint/Abbrechen -Haltepunkt am Cursor |
| Strg+Alt+b | Ignorieren Sie alle Haltepunkte |
| Alt+Verschiebung+q, b | Aktivieren Sie das Haltepunktfenster |
1. Zeilenresektpunkt: Bruchpunkte 1.1 und 1.4 auf einer bestimmten Linie in der Methode. Line Breakpoints können den Zustand des Suspendenthreads/VM 1.3 und die Anzahl der Zugriffe 1.2 festlegen.
Die Bedingung in 1.3 ist, dass bei der Registrierung der Bean-Definition (RegisterBeANdefinition), wenn es org.springframework.demo.mybean ist, der Thread ausgesetzt wird und Sie Schritt-für-Schritt-Debugging beginnen können.
Für die Verwendung von Hit Count 1.2 befindet sich es im Allgemeinen in der Schleife. Wenn es ein Problem mit der n-ten Objektverarbeitung gibt, setzen Sie Hit count = N. Während der Neuausarbeitung kann es bequem sein, das Debuggen zu beenden, wenn die Anzahl der Schleifen, die debuggen werden müssen,.
2. METHODE BREETSPOINTEN: BREAKPOINTS 2.1 und 2.2 auf der Methode. Der Vorteil der Methoden -Haltepunkte besteht darin, dass sie beim Eingeben oder Verlassen der Methodenmethode anhalten und debuggen können. Sie ähneln den Zeilen -Breakpoints, und nur Zeilen -Haltepunkte und Methoden -Haltepunkte haben die Funktionen der Einstellungsbedingungen und Zugriffszeiten.
Methoden -Haltepunkte haben jedoch einen weiteren Vorteil. Wenn der Code kompiliert wird, funktioniert der angegebene Zeilen -Breakpoint nicht, sodass Sie nur die Haltepunkte der Methode treffen können.
Wenn Sie interessiert sind, können Sie den Haken vor dem Hinzufügen von Zeilennummer… über A1 entfernen und debuggen und einen Blick darauf werfen.
3.. Beobachten Sie Breakpoints: Breakpoints 3.1 und 3.3 Treffer auf Mitgliedervariablen. Nur Objektelementvariablen haben Effekt, statische Mitgliedsvariablen funktionieren nicht.
Sie können den Thread/VM 3.2 festlegen, der auf die Variable zugegriffen oder festgelegt wird, dh alle Methoden zum Zugriff auf oder ein Festlegen von Mitgliedern, die ähnlich wie 3.4 aufgerufen werden, werden überwacht.
4. Ausnahmebestandteile: Ausnahmebestandungspunkte können über 4.6 hinzugefügt werden, oder klicken Sie in den Protokollinformationen auf die Ausgabe der Ausgabe der Ausnahmeklassen.
Ausnahme -Haltepunkt 4.1. Wenn im System eine Ausnahme auftritt, wird der Faden/die VM an der Wurfposition der erfassten Ausnahme oder bei der Ausnahme des Wurforts 4.2 und 4.4 aufgehängt, das das Programm nicht fängt, und kann auch angeben, ob die Unterklassen, die Ausnahmen enthalten, ebenfalls 4.3 und 4.5 erfasst werden.
Zusätzlich zu der oben genannten abnormalen Suspension können Sie die Ausführung von Java-> Debug, hauptsächlich zwei, einstellen:
1. Ob die Ausführung von Ausnahmen auf nicht erfasste Ausnahmen auftritt. Während des Debuggens gibt es immer eine Ausnahme -Aussetzung, die sich auf das Debuggen auswirkt, aber es ist kein Ausnahmeregelungspunkt festgelegt. Sie können diese Option überprüfen.
2. Ob es bei Kompilierungsfehlern suspendiert wird, diese Situation tritt normalerweise beim Debugieren und Ändern des Codes auf.
Eine andere Sache, die zu erwähnen ist, ist, dass die Anwendung mit der Hauptmethode gestartet wird. Sie können den Stopp im Haupt A3 in der Debugging -Konfiguration überprüfen. Wenn das Programm eintritt, wird der Thread suspendiert und auf das Debuggen warten.
5. Klassenlade -Breakpoint: Breakpoint 5.1 wurde auf den Klassennamen getroffen. Klassenlade -Breakpoints können nicht auf der Schnittstelle eingestellt werden, aber abstrakte Klassen sind in Ordnung. Während des Debuggens werden Breakpoints jedoch offensichtlich nicht den Klassenloader eingeben. Es ist bekannt, dass ein Schritt-für-Schritt-Eintrag in die Konstruktionsmethode der Unterklasse eintritt. Nach dem Aussetzen des Threads geben Nichtabstraktklassen den Klassenloader ein (falls kein Filter herausgefiltert wird) 5.3. Unabhängig davon, ob der Klassenladeausbruch in einer abstrakten oder nicht abstrakten Klasse getroffen wird, wird der Thread/VM5.2 suspendiert, wenn die Klasse zum ersten Mal geladen wird oder die erste Unterklasse zum ersten Mal geladen wird.
2. Debuggen Sie das Programm
1.. Debuggen Sie lokale Java -Sprachprogramme
Unter allen Debugging ist das Debuggen eines Java -Programms am einfachsten und beinhaltet hauptsächlich das Setzen von Haltepunkten, das Debuggen, das Durchtreten und das Ende des Debuggens.
1) Breakpoints festlegen:
2) Starten Sie Debugging: Eclipse bietet vier Möglichkeiten, um das Debuggen des Programms (Start) zu beginnen, nämlich über Menü (Run> Debugg), Icon ("Green Bed Bug"), rechts-> Debugg AS und Shortcut Key (F11). In dieser Hinsicht ähnelt es anderen Befehlen (z. B. Run).
Eine schnelle auftaucht. Sie müssen zum Debugging -Arbeitsbereich wechseln, "Denken Sie meine Entscheidung", denken Sie daran, die Auswahl zu erhalten, und beim nächsten Mal wird keine Eingabeaufforderung aufgefordert und dann auf [ja] klicken.
3) Einstufige Ausführung: Verwenden Sie hauptsächlich mehrere oben erwähnte Ansichten zum Debuggen, darunter mehrere Schaltflächen in der Debug-Ansicht haben Abkürzungsschlüssel:
Schritt Retuen (F7)
Treten Sie um (F6)
Schritt in (F5)
Enddebugging: Beenden Sie das Debuggen des lokalen Programms durch den Begriffenbefehl.
2. Fall
Szenario 1: Xiao Ming schrieb einen Task -Executor, der kontinuierlich ausgeführt wurde. Nachdem er es für einen bestimmten Zeitraum online ausgeführt hatte, stellte er fest, dass es eine Wahrscheinlichkeit einiger Misserfolge gab. Nach einem bestimmten Zeitraum verließ der Ausführungsversorger abnormal. Da es sich um einen Nullzeiger handelte, wollte Xiao Ming vor Ort debuggen und wusste nicht, wo der Haltepunkt war. Dieses Problem ist ein probabilistisches Ereignis und erscheint möglicherweise nicht unbedingt. Nachdem Xiao Ming mehrmals debuggierte, war er schwindelig und konnte den Code nicht einmal klar sehen. Xiao Ming wollte einen Haltepunkt haben und anhalten und ihn das Problem finden lassen, wenn eine Null -Zeiger -Ausnahme auftritt. Das wäre großartig.
Ausnahmebrechungspunkt
Ausnahmebrechungspunkt: Beim Auffinden eines Problems begegnen Sie häufig Breakpoints, die nicht in die entsprechende Position getroffen werden können, was sich sehr vom Auslöserpunkt des Problems unterscheidet. Zu diesem Zeitpunkt können Sie also genauso gut einen Ausnahmebrechungsprogramm ausprobieren. Wie der Name schon sagt, bezieht sich ein Ausnahmebrechungspunkt auf einen Haltepunkt, der nach dem Ausführen einer bestimmten Ausnahme automatisch hängt.
Klicken Sie auf den roten Teil, um einen abnormalen Bruchpunkt hinzuzufügen
Geben Sie die Art der Ausnahme ein, die Sie finden möchten, z. B. NullPointerexception. Auf diese Weise wird der aktuelle Thread nach einer Ausnahme von NullPointerexception in das System ausgesetzt, sodass der aktuelle Thread die Möglichkeit gibt, das Problem zu finden.
Szene 2: Xiao Ming schrieb eine riesige Schleife. Als Xiao Ming den Code einstellte, stellte er fest, dass es ein Problem gab, wenn die Schleife das 100.000 -jährige Mal erreichte, und es traf seine Erwartungen nicht. Also machte Xiao Ming einen Haltepunkt in der Schleife und wollte sehen, was los war, aber Xiao Ming dachte nie darüber nach, wie schwierig es wäre, 100.000 Loops zu erreichen. Zu diesem Zeitpunkt hatte Xiao Ming bereits viel nachgedacht, wenn es einen solchen Haltepunkt geben könnte:
Wenn die Anzahl der Schleifen == 100000, hört der Faden an
Bedingter Breakpoint
Wie im Bild rechts gezeigt, schleifen Sie 1000 -mal auf. Wenn Sie beim Schleifen bis zum 500-fachen aufhören möchten, können Sie einen bedingten Haltepunkt erstellen und mit der rechten Maustaste auf den Haltepunkt klicken, um den Haltepunkt-Eigenschaften zu hängen.
Wählen Sie den Zustand aktivieren
Fügen Sie im Leerzeichen Ihren eigenen Zustand hinzu. Wenn die Bedingung wahr zurückgibt, wird der Thread suspendiert. Wenn falsch, wird die Ausnahme ignoriert.
Hit Count spielt den Thread offiziell aus, nachdem der Haltepunkt durchlaufen wird. Wenn es auf 500 festgelegt ist, werden das erste 499 -fache ausgedrückt und wird nach dem Haltepunkt nicht aufhören. Wenn der Haltepunkt 500. Mal ist, wird der Haltepunkt den aktuellen Thread ausgesetzt.
Ausdruck
Ausdrücke können einige Befehlszeilen anzeigen, die im aktuellen Code nicht verfügbar sind, um die Positionierung von Problemen zu erleichtern.
Szene 3: Xiao Ming ist in letzter Zeit auf ein Problem gestoßen. Es gibt immer Probleme beim Aufrufen eines Plug-In-Drittanbieters. Xiao Ming vermutete, dass es sich um einen Fehler des Drittanbieters handelte, aber Xiao Ming fand den Quellcode nicht und konnte ihn nicht debuggen. Was sollte Xiao Ming tun?
Debugug auf Plug-Ins von Drittanbietern
1. Dekompilieren Sie den Code mit dem Dekompilen -Tool
2. Filtern Sie den dekompilierten Quellcode
Fixe Quellcode -Kompilierungsfehler beheben
4. Debugug
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.