Was bedeutet "Drop Frame" bei Verwendung des Java-Debuggers in Intellij?

94

Ich habe den Java-Debugger in Intellij 8 verwendet und eine Schaltfläche mit der Bezeichnung "Drop Frame" festgestellt. Weiß jemand, welchen Zweck dies erfüllt? Wie / warum sollte dies verwendet / nützlich sein?

benstpierre
quelle

Antworten:

128

Der Aufrufstapel Ihrer Anwendung kann im Debugger angezeigt werden. Mit der Funktion "Drop Frame" können Sie auf einen vorherigen Stack Frame zurückgreifen, der in gewisser Weise in die Vergangenheit zurückreicht. Dies kann hilfreich sein, um eine Funktion erneut aufzurufen, wenn Sie einen kritischen Punkt verpasst haben, den Sie erneut sehen möchten.

Wie der Name "Stack Frame" andeutet, werden Änderungen, die bereits am globalen Status vorgenommen wurden (wie statische Variablen, Änderungen an Feldwerten und dergleichen), nicht rückgängig gemacht, sondern nur lokale Variablen werden zurückgesetzt. Dies kann zu einem anderen Ausführungspfad führen als der, der ursprünglich zu Ihrem Haltepunkt geführt hat. Sie müssen sich dessen bewusst sein - ich halte es oft für eine nützliche Funktion, verschiedene Ausführungspfade zu erkunden, ohne die Anwendung oder einen bestimmten langwierigen Prozess, der zum aktuellen Stapel führte, neu starten zu müssen. In Kombination 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 auftretende Nebenwirkungen - z. B. Netzwerkverkehr, Dateimanipulationen, Konsolenausgabe usw. - nicht zurückgespult werden können.

Daniel Schneller
quelle
14

Drop Frame im Debugger öffnet den aktuellen Stack-Frame und gibt die Kontrolle an die aufrufende Methode zurück, wodurch alle lokalen Variablen zurückgesetzt werden. Dies ist sehr nützlich, um eine Funktion wiederholt zu durchlaufen, aber seien Sie gewarnt: Feldmutationen oder globale Statusänderungen bleiben bestehen.

Weitere Informationen finden Sie hier .

Jorge Ferreira
quelle
7

Durch das Löschen von Frames vom 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 in Eclipse "Drop to Frame" heißt, aber sie dient demselben Zweck.

Dolph
quelle