6

C/C++ アプリケーションをデバッグするときに、ポインター型にキャストされたアドレスのウォッチを作成し、構造体がスコープ外に出た場合でも内容を表示できます。Javaでそのようなことを達成することは可能ですか?
私がメソッドにいるとしましょう。「&this」のようなものにウォッチを追加し、クラス メソッドを離れると、範囲外であってもその内容を見ることができますか?

私の質問に対する答えは「いいえ」であると確信しているので、主に「なぜ?」に興味があります。説明。これは JVM の制限ですか? JPDAの制限?このような専門的な質問をするのに適した場所はありますか?

4

2 に答える 2

1

C/C++ では、任意のポインター (が指す領域) を監視し、その変数にキャストします。

Java にはポインタがありません。できるwatchのは変数だけです。範囲外では存在しません。

とにかくそれを見たいと思うのはなぜですか?ウォッチを装着すると、スコープ内で適切に監視されます。

于 2011-09-13T02:54:28.173 に答える
0

スコープ外の変数を監視することはできません。

ただし、それを指す別の変数が見つかった場合は、同じオブジェクトを見ることができます。

どこにも参照されていないオブジェクトを監視しても意味がありません (プログラムの実行に影響を与えることはできません。変更することはできません。ガベージ コレクションが行われ、まったく別のものによってメモリが再利用されます)。

Java レベルのデバッグ ツールは引き続き JVM メモリ管理の上で動作するため、オブジェクトへの有効な参照が必要であり、ランダムなメモリ領域を覗き見ることはできません。

于 2011-09-13T02:55:10.817 に答える