Heim  >  Artikel  >  Java  >  Debuggen ohne Haltepunkte

Debuggen ohne Haltepunkte

王林
王林Original
2024-08-14 10:38:40830Durchsuche

In anderen Sprachen lesen: Englisch Español 中文

In einem typischen Debugging-Szenario würden Sie Haltepunkte festlegen, um dem Debugger mitzuteilen, wann Ihr Programm angehalten werden soll. Ein Haltepunkt entspricht normalerweise dem Moment, der den Ausgangspunkt für weitere Untersuchungen markiert.

Die Entscheidung, wo ein Haltepunkt gesetzt werden soll, kann eine Herausforderung sein. Es kann Situationen geben, in denen die genaue Zeile unklar ist, oder Sie möchten das Programm lieber aufgrund der Zeit als aufgrund eines bestimmten Codes anhalten.

In diesem Artikel werfen wir einen Blick auf die Pause-Programm-Funktion von IntelliJ IDEA – eine weniger bekannte Debugging-Technik, die in einigen Szenarien, einschließlich der oben beschriebenen, äußerst leistungsstark sein kann. Wir werden die Anwendungsfälle und Einschränkungen besprechen und das Geheimnis Schritt für Schritt lüften.

Was ist Pause?

Programm anhalten ist eine Funktion des IntelliJ IDEA-Debuggers, die es Ihnen ermöglicht, Ihre Anwendung zu jedem Zeitpunkt willkürlich anzuhalten. Darüber hinaus müssen Sie nicht einmal den Anwendungscode kennen. Tatsächlich können Sie es einfach ignorieren!

Depurar sem Pontos de Interrupção

Um ein Programm anzuhalten, klicken Sie in der Debugger-Symbolleiste auf Programm anhalten. Dann stoppt das Programm mitten in dem, was Sie gerade tun.

Einschränkungen

Auf den ersten Blick sieht ein angehaltenes Programm möglicherweise genauso aus wie eines, das an einem Haltepunkt angehalten wurde. Dies trifft jedoch nur bedingt zu.

Depurar sem Pontos de Interrupção

Es wäre richtig, Pause-Programm als eine Art Thread-Dump-Plus zu betrachten. Sie können sowohl Variablen als auch Threads weiterhin wie gewohnt überprüfen. Einige der erweiterten Funktionen, wie z. B. Ausdruck auswerten, funktionieren jedoch nicht.

Anwendungsfälle

Es gibt unzählige Möglichkeiten, das Pauseprogramm zu verwenden. Es kann oft austauschbar mit herkömmlichen Haltepunkten verwendet werden. Es gibt jedoch Szenarien, in denen die Verwendung von Pause-Programm ein geeigneterer Ansatz ist. Betrachten wir einige davon.

Nicht reagierende Apps

Wenn Sie feststellen, dass die Benutzeroberfläche einfriert, liegt dies normalerweise daran, dass der UI-Thread blockiert ist.

Depurar sem Pontos de Interrupção

Pause Program könnte in diesem Fall nützlich sein, da es Ihnen ermöglicht, die Anwendung anzuhalten, während sie nicht reagiert, und den Aufrufstapel des UI-Threads zu untersuchen. Dies reicht normalerweise aus, um das Problem zu diagnostizieren.

Fehlende Schriftarten

Wie bereits erwähnt, können Sie mit Programm anhalten den Quellcode, der Ihnen möglicherweise ohnehin fehlt, einfach ignorieren. Obwohl dieses Szenario nicht sehr häufig vorkommt, würden Haltepunkte Ihnen nicht weiterhelfen, wenn Sie darauf stoßen.

Hier kommt Pauseprogramm ins Spiel!

Depurar sem Pontos de Interrupção

Schlösser

Wenn Sie ein Synchronisierungsproblem wie einen Deadlock oder Livelock vermuten, kann Ihnen das Pause-Programm dabei helfen, die genauen Threads und Sperren zu finden, die das Problem verursachen.

Depurar sem Pontos de Interrupção

Pausieren Sie in diesem Fall das Programm und überprüfen Sie die Thread-Liste. Es wird angezeigt, welche Threads blockiert sind. Wenn Sie zum Ausführungspunkt navigieren, sehen Sie auch die kritischen Abschnitte, in denen sie gesperrt sind. Diese Informationen können Ihnen dabei helfen, eine Lösung zu finden.

Geheimer Schritt-für-Schritt-Tipp

Wie ich bereits erwähnt habe, schränkt Programm anhalten Ihren Zugriff auf einige der erweiterten Funktionen des Debuggers ein. Wenn Sie versucht haben, bestimmte Funktionen zu verwenden, während eine Anwendung angehalten ist, wurde Ihnen möglicherweise eine Fehlermeldung angezeigt, die besagt: Methoden können nach Pause-Aktion nicht ausgewertet werden.

Depurar sem Pontos de Interrupção

Es gibt jedoch eine Abkürzung für diese Einschränkung.

Nachdem Sie eine Anwendung angehalten haben, führen Sie die Aktion Schritt für Schritt aus. Eintreten oder Überschreiten reichen aus. Sobald dies erledigt ist, befinden Sie sich in einer regulären Debugging-Sitzung, ähnlich wie beim Anhalten einer Anwendung mithilfe eines Haltepunkts. Alle erweiterten Funktionen sind jetzt freigeschaltet!

Abschluss

Das war's für heute! Ich hoffe, dass Sie diese Tipps und Tricks nützlich finden.

Wenn Sie an weiteren Artikeln zum Thema Debuggen und Profiling interessiert sind, schauen Sie sich einige meiner anderen Artikel an:

  • Debugger.godMode() – Hacken Sie eine JVM-Anwendung mit dem Debugger
  • Fehlerbehebung bei der Langsamkeit des Debuggers
  • Debuggen inaktiver Anwendungen
  • Was stimmt nicht mit createDirectories()? - CPU-Profil-Anleitung

Wenn ich etwas Spezielles zum Debuggen in Java besprechen soll, zögern Sie nicht, mich zu kontaktieren! Ihre Meinung hilft dabei, die für Sie interessantesten Inhalte zu priorisieren und zu veröffentlichen.

Das obige ist der detaillierte Inhalt vonDebuggen ohne Haltepunkte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn