2010-04-07 4 views
1

J'ai une question à propos de la décharge d'un objet..NET Object Dump

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 

Quelles sont les significations de: Champ, Offset, VT?

Répondre

2

Il a été un moment que je travaillais avec la couche de métadonnées .net, mais IIRC:
- Le champ est le jeton pour ce champ de l'union (contient une valeur puisque ce sont des champs)
- Offset est l'octet offset pour ce champ dans l'union (l'union est de 16 octets, field1 commence à l'octet 4 et field2 commence à l'octet 8)
- VT est l'emplacement V-Table (non applicable car ce sont des champs et non des méthodes)

+0

Merci beaucoup! ;) – Thomas

+0

Pas de problème, je suis juste étonné que quelqu'un d'autre s'intéresse à ce genre de choses! "méta-données .net de bas niveau" étant le genre de connaissances dont je pensais qu'elles ne seraient jamais utilisées. 8) – Task

0

Et aussi vous pouvez regarder la mémoire des champs en faisant dd youobjectaddress+4 l1

et vous pouvez l'utiliser dans le script windbg en utilisant le poi(youobjectaddress+4) qui est essentiellement le pointeur sur le premier champ o