0

デバッグモードで変数を監視するWatchがあることはわかっています。変数を変更、削除、または別のオブジェクトに割り当てることができます。

しかし、私が言いたいのは、メモリ内のcentainオブジェクトの状態を監視することです。

オブジェクトを受け取り、変数に割り当てるメソッドがあるとします。

すなわち:

void DoSomething(object anObject){
   object tempObject = anObject;
}

このメソッドは1回以上呼び出されます。

このtempObjectでWatchを使用すると、WatchのtempObjectは、新しく割り当てられたオブジェクト値のときに変化し続けます。

ここで私が興味を持っているのは、代わりにこのanObjectのみを監視することです。このメソッドの2回目の呼び出しで、このanObjectのcentainパラメーターが正しくないことがわかりました。このオブジェクトをトレースして、この誤ったパラメーターがいつ正しいパラメーターに戻るかを確認します。(範囲外でも)。

どうやってやるの?または、Visual Studioでそれを行うことは可能ですか?

現在、同様の問題が発生しているため、セントインオブジェクトが廃棄されたように見えますが、どういうわけか、どこかで再び使用されており、廃棄されていません。ウォッチを使用すると、それが私が見ているのと同じオブジェクトであるかどうかわかりません。

これを明確にしたいと思います。

4

2 に答える 2

1

問題のオブジェクトへのWeakReferenceを保持して、それを監視してみてください。そこから、のターゲットとWeakReference問題のオブジェクトが実際に同じオブジェクトであるかどうかを確認できます。

于 2012-10-19T19:04:39.927 に答える
0

オブジェクトへの強い参照がある限り、オブジェクトはガベージコレクターによって破棄されません。一部のコードがオブジェクトに対してDisposeを呼び出しているか、弱参照を使用している可能性があります。

Son of Strikeデバッグ拡張機能を使用すると、いつでもオブジェクトのGCルートをトレースできます。ただし、イベント通知を受信できるかどうかはわかりません。

于 2012-10-19T18:42:30.650 に答える