0

フレームワークのコールバック:

PropertyChanged イベントによってトリガーされる WPF バインディングをデバッグしています。次に、いくつかの中間フレームワーク呼び出しを介してプロパティにコールバックします。

デバッグ:

プロパティゲッターにブレークポイントを設定しました。すぐに表示されるウィンドウで、 をセットアップし、に関連付けられているStackTraceを見つけます。StackFrameBindingExpression

欠落しているインスタンス:

関心のある の呼び出しthisから取得したメソッドのスタックからパラメーターを取得できるようにしたいのですが、このオブジェクト参照を取得するにはどうすればよいですか?GetMethodStackFrame

4

1 に答える 1

0

SOSを使用して、次のようなコマンドでこれを取得できることがわかりました。

!CLRStack -p                     // Dump the CLR stack
...
0043d6ec 511dcea7 System.Windows.Data.BindingExpression.TransferValue(System.Object, Boolean)
PARAMETERS:
    this (<CLR reg>) = 0x0db05468
//...

!do 0x0db8e7fc                   // Dump the object
Name:        System.Windows.Data.BindingExpression
//...
Fields:
  MT        Field   Offset                 Type VT     Attr    Value Name
//...
55569fbc  4001ae3       10 System.WeakReference  0 instance 0db8ea9c _targetElement

!do 0x0db8ea9c
Name:        System.WeakReference
Fields:
   MT       Field   Offset                 Type VT     Attr    Value Name
5556ab88  40006ed        4        System.IntPtr  1 instance 0E92C0BC m_handle

!dumpvc 0x5556ab88 0x0E92C0BC    // Dump the value
Name:        System.IntPtr
Fields:
  MT      Field     Offset                 Type VT     Attr    Value Name
5552a3f8  40004a9        0                  PTR  0 instance 0df6d9f8 m_value

!do 0x0df6d9f8
Name:        System.Windows.Controls.TextBox
//...

ただし、SOSを使用せずにデバッグするときに、これをドリルダウンするために使用できるものが必要です。

于 2012-05-21T09:51:06.073 に答える