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.
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!
Um ein Programm anzuhalten, klicken Sie in der Debugger-Symbolleiste auf Programm anhalten. Dann stoppt das Programm mitten in dem, was Sie gerade tun.
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.
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.
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.
Wenn Sie feststellen, dass die Benutzeroberfläche einfriert, liegt dies normalerweise daran, dass der UI-Thread blockiert ist.
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.
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!
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.
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.
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.
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!
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:
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!