In anderen Sprachen lesen: English 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 auf der Grundlage der Zeit als auf der Grundlage eines bestimmten Codes anhalten.
In diesem Artikel werfen wir einen Blick auf die Funktion Programm anhalten 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.
Pause Program 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, Programm anhalten 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, Programm pausieren zu verwenden. Es kann oft austauschbar mit herkömmlichen Haltepunkten verwendet werden. Es gibt jedoch Szenarien, in denen die Verwendung von Programm anhalten ein geeigneterer Ansatz ist. Betrachten wir einige davon.
Wenn ein Einfrieren der Benutzeroberfläche (UI) auftritt, 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 Programm anhalten ins Spiel!
Wenn Sie ein Synchronisierungsproblem wie einen Deadlock oder Livelock vermuten, kann Ihnen Programm anhalten dabei helfen, die genauen Threads und Sperren zu finden, die das Problem verursachen.
In diesem Fall pausieren Sie 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. Step Into oder Step Over 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, Sie finden diese Tipps und Tricks hilfreich.
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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3