IntellijでJavaデバッガーを使用する場合、「ドロップフレーム」とはどういう意味ですか?


94

Intellij 8内でJavaデバッガーを使用していて、「ドロップフレーム」というラベルの付いたボタンに気付きましたが、これがどのような目的に役立つのか誰かが知っていますか?これはどのように/なぜ使われる/役に立つのでしょうか?

回答:


128

アプリケーションのコールスタックはデバッガーで表示できます。「ドロップフレーム」機能を使用すると、ある時点で前のスタックフレームに「フォールバック」できます。これは、もう一度見たい重要な場所を逃した場合に、関数を再入力するのに役立ちます。

「スタックフレーム」という名前が示すように、グローバル状態にすでに加えられた変更(静的変数、フィールド値の変更など)は取り消されず、ローカル変数のみがリセットされます。これにより、最初にブレークポイントに至ったものとは異なる実行パスが生じる可能性があります。これに注意する必要があります。アプリケーションを再起動したり、現在のスタックにつながった特定の時間のかかるプロセスを実行したりすることなく、さまざまな実行パスを探索することは、便利な機能であるとよく考えます。デバッガーからも利用できる変数値の変更と組み合わせると、あらゆる種類の興味深いことができます。

もちろん、ネットワークトラフィック、ファイル操作、コンソール出力など、発生した可能性のある副作用は巻き戻すことはできません。


14

デバッガー内のドロップフレームは、現在のスタックフレームをポップし、制御を呼び出しメソッドに戻し、ローカル変数をリセットします。これは、関数を繰り返し実行する場合に非常に役立ちますが、警告が表示されます。フィールドの変更またはグローバルな状態変化は残ります。

詳細はこちら


7

デバッガーを使用してスタックからフレームをドロップすると、基本的に、アプリケーションの実行を「巻き戻して」前の状態に戻すことができます。スタックフレーム外の変数は元に戻されません。

補足として、この機能はEclipseでは「Drop to Frame」と呼ばれていますが、同じ目的を果たします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.