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 を読み取って Type を判別し、オブジェクトのフィールドをダンプすることです。

値型の場合、MT はありません。値の型には、フィールドのみが含まれます。したがって、 !dumpvc を使用する必要があります。

于 2012-04-05T12:17:55.133 に答える