Frage Wenn Sie den Java-Debugger in Intellij verwenden, was bedeutet "Drop Frame"?


Ich benutzte den Java-Debugger innerhalb von Intellij 8 und bemerkte eine Schaltfläche mit der Bezeichnung "drop frame". Weiß jemand, welchem ​​Zweck dies dient? Wie / warum sollte dies genutzt werden?


76
2018-03-02 23:49


Ursprung


Antworten:


Der Aufruf-Stack Ihrer Anwendung kann im Debugger angezeigt werden. Mit der "Drop Frame" -Funktionalität können Sie auf einen vorherigen Stack-Frame "zurückgreifen", gewissermaßen in der Zeit zurückversetzt. Dies kann hilfreich sein, wenn Sie eine Funktion erneut eingeben, wenn Sie einen kritischen Punkt verpasst haben, den Sie wieder sehen möchten.

Wie der Name "Stack Frame" andeutet, werden Änderungen, die bereits am globalen Zustand vorgenommen wurden (wie statische Variablen, Änderungen an Feldwerten und dergleichen) nicht rückgängig gemacht, sondern nur lokale Variablen zurückgesetzt. Dies kann zu einem anderen Ausführungspfad führen als dem, der ursprünglich zu Ihrem Unterbrechungspunkt geführt hat. Sie müssen sich dessen bewusst sein - ich halte es oft für ein nützliches Feature, um verschiedene Ausführungswege zu erkunden, ohne dass die Anwendung oder ein bestimmter langwieriger Prozess, der zum aktuellen Stack geführt hat, neu gestartet werden muss. Kombiniert mit der Änderung von Variablenwerten, die auch über den Debugger verfügbar sind, können Sie alle möglichen interessanten Dinge tun.

Bitte beachten Sie, dass natürlich alle möglichen Nebenwirkungen aufgetreten sind - e. G. Netzwerkverkehr, Dateimanipulation, Konsolenausgabe usw. - kann nicht zurückgespult werden.


99
2018-03-03 00:01



Drop Frame im Debugger erscheint   der aktuelle Stapelrahmen und puts   Kontrolle zurück zum Anrufer   Methode, die alle lokalen Variablen zurücksetzt.   Dies ist sehr nützlich, um wiederholt zu springen   durch eine Funktion, aber sei gewarnt:   Feldmutationen oder globaler Zustand   Änderungen bleiben bestehen.

Weitere Informationen Hier.


10
2018-03-02 23:56



Durch das Löschen von Frames aus dem Stapel mit dem Debugger können Sie die Ausführung Ihrer Anwendung im Wesentlichen zurückspulen, um einen vorherigen Status zu erreichen. Variablen außerhalb des Stapelrahmens werden nicht zurückgesetzt.

Als Randnotiz glaube ich, dass diese Funktion "Drop" genannt wird zu Rahmen "in Eclipse, aber es dient dem gleichen Zweck.


5
2018-03-02 23:55