使用 Windbg 的转储数组



在C#中,我有一个对象说Shape它有两个字段arealength

我得到了一个shapeList,它是形状的集合。

我在崩溃转储中有一个shapeList地址。

我需要 windbg 中的一个脚本来遍历 shapeList 数组中的每个项目,并为每个形状单独显示 area 的值。

    .for ( r $t1 = 0; @$t1 < [length] * [element size]; r $t1 = @$t1 + [element size];) {!do poi(poi(@$t1+poi([address of list]+0x8)+0x18)+[offset of child object in parent object) }
    For example:
     class Foo
        {
            public Bar MyBar { get; set; }
        }
        class Bar
        {
            public String MyString { get; set; }
        }
0:000> .for ( r $t1 = 0; @$t1 < 0x5 * 0x8; r $t1 = @$t1 + 0x8;) {!do poi(poi(@$t1+poi(0000000002362e40+0x8)+0x18)+0x8) }
Name:        testdebug.Bar
MethodTable: 000007fe95eb3928
EEClass:     000007fe95fc22d8
Size:        24(0x18) bytes
File:        C:userstestdebug.exe
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
000007fef47b4130  4000002        8        System.String  0 instance 00000000023653b0 <MyString>k__BackingField
Name:        testdebug.Bar
MethodTable: 000007fe95eb3928
EEClass:     000007fe95fc22d8
Size:        24(0x18) bytes
File:        C:userstestdebug.exe
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
000007fef47b4130  4000002        8        System.String  0 instance 0000000002365468 <MyString>k__BackingField
Name:        testdebug.Bar
MethodTable: 000007fe95eb3928
EEClass:     000007fe95fc22d8
Size:        24(0x18) bytes
File:        C:userstestdebug.exe
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
000007fef47b4130  4000002        8        System.String  0 instance 0000000002365520 <MyString>k__BackingField
Name:        testdebug.Bar
MethodTable: 000007fe95eb3928
EEClass:     000007fe95fc22d8
Size:        24(0x18) bytes
File:        C:userstestdebug.exe
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
000007fef47b4130  4000002        8        System.String  0 instance 00000000023655d8 <MyString>k__BackingField
Name:        testdebug.Bar
MethodTable: 000007fe95eb3928
EEClass:     000007fe95fc22d8
Size:        24(0x18) bytes
File:        C:userstestdebug.exe
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
000007fef47b4130  4000002        8        System.String  0 instance 0000000002365690 <MyString>k__BackingField

最新更新