0

!dumpvc 79b9a9ac a0a208 名称:System.IntPtr MethodTable:79b9a9ac EEClass:798d57e0 大小:12(0xc) 字节文件:C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll字段: MT 字段偏移类型 VT Attr 值名称 79b5a21c 40004a9 0 PTR 0 实例 748d5756 m_value 79b9a9ac 40004aa b4c System.IntPtr 1 共享静态零

域:值 0015db70:NotInit <<

!dumpobj 748d5756 无效对象

!dumpvc 79b5a21c 748d5756 名称:System.UIntPtr MethodTable:79b5a21c EEClass:798d8a84 大小:12(0xc) 字节文件:C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll字段: MT 字段偏移类型 VT Attr 值名称 79b5a21c 4000697 0 PTR 0 实例 m_value 79b5a21c 4000698 b78 System.UIntPtr 1 共享静态零

域:值 0015db70:NotInit <<

4

1 回答 1

2

!dumpobj 不适用于什么地址?假设您的意思是 !dumpobj 748d5756,问题是 !do 不适用于值类型。GC 堆上的每个对象(引用类型)在对象内存的开头都有一个 MT(方法表)指针。因此,GC 堆上的每个对象都是自描述的。!do 的工作方式是读取 MT 以确定类型,然后转储对象的字段。

使用值类型,您就没有 MT。值类型仅包含字段。因此,您必须使用 !dumpvc 。

于 2012-04-05T12:17:55.133 回答