2010-04-07 66 views
1

我有一个关于对象转储的问题。.NET对象转储

0:000> !do 0x012817b8

Name: blabla.Union2 
MethodTable: 009231ac 
EEClass: 00921548 
Size: 16(0x10) bytes 
Fields: 
     MT Field Offset     Type VT  Attr Value Name 
790fd0f0 4000003  4  System.Object 0 instance 00000000 o 
7912d7c0 4000004  8  System.Int32[] 0 instance 00000000 arr 

什么是性意味:字段,胶印,VT?

回答

2

这已经有一段时间,因为我与.NET元数据层的工作,但IIRC:
- 字段是工会的那场令牌(包含一个值,因为这些字段)
- Offset是字节(联合是16字节,字段1开始于字节4,字段2开始于字节8)
-VT是V-表插槽(由于这些是字段而不是方法,因此不适用)

+0

非常感谢! ;) – Thomas 2010-04-07 13:49:14

+0

没问题,我只是感到惊讶,其他人都对这个东西感兴趣! “低级的.net元数据”是我认为永远不会有用的知识。 8) – Task 2010-04-07 14:47:34

0

而且你也可以通过做dd youobjectaddress+4 l1

,你可以使用它在windbg脚本中使用poi(youobjectaddress+4),它基本上是第一个字段的指针o