вторник, 22 июня 2010 г.

WinDbg: dumping the target object of a WeakReference

The following example demonstrates how to dump the target object of a WeakReference.

1. Find WeakReference’s object address. In my example it is 0bb9a878.

2. Use !dumpobj to print content of the WeakReference:

0:025> !dumpobj 0bb9a878
Name:        System.WeakReference
MethodTable: 5ec0d7ec
EEClass:     5e7eacd8
Size:        16(0x10) bytes
File:        C:\Program Files\Microsoft Silverlight\4.0.50524.0\mscorlib.dll
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
5ec0c5a0  4000522        4        System.IntPtr  1 instance  7631528 m_handle
5ec007e4  4000523        8       System.Boolean  1 instance        0 m_IsLongReference

3. The m_handle member is a pointer to the target object. The member is value type (System.IntPtr), so we use !dumpvc command to print its content:

0:025> !dumpvc 5ec0c5a0 7631528
Name:        System.IntPtr
MethodTable: 5ec0c5a0
EEClass:     5e7e9f00
Size:        12(0xc) bytes
File:        C:\Program Files\Microsoft Silverlight\4.0.50524.0\mscorlib.dll
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
5ec0d720  4000353        0                  PTR  0 instance 0bb9a86c m_value
5ec0c5a0  4000354      50c        System.IntPtr  1   shared   static Zero
    >> Domain:Value  0b670f20:NotInit  0b675a40:NotInit  <<

4. The address of the target object is 0bb9a86c. Now we can use !dumpobj command to print it:

0:025> !dumpobj 0bb9a86c
Name:        HelloSl.FooBar
MethodTable: 07625428
EEClass:     07621cd8
Size:        12(0xc) bytes
File:        HelloSl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Fields:
None

Комментариев нет:

Отправить комментарий

Random thoughts, ideas and questions on .NET development

Постоянные читатели