Udostępnij za pośrednictwem


Dumping the contents of a dictionary object using Windbg and SOS.dll

In order to dump the contents of a dictionary, you need to start with either the MethodTable or the name of the class, then you can follow the below steps: 

0:009> !dumpheap -mt 000007feeed0b9c0

         Address MT Size

000000018003e630 000007feeed0b9c0 80

000000018008ec10 000007feeed0b9c0 80  

Statistics:

              MT Count TotalSize Class Name

000007feeed0b9c0 2 160 System.Collections.Generic.Dictionary`2[[System.Guid, mscorlib],[Microsoft.TeamFoundation.Framework.Server.TeamFoundationPerformanceCounters, Microsoft.TeamFoundation.Framework.Server]]

Total 2 objects

Note: You can also use -Dumpheap -type System.Collections.Generic.Dictionary`2[[System.Guid, mscorlib],[Microsoft.TeamFoundation.Framework.Server.TeamFoundationPerformanceCounters,Microsoft.TeamFoundation.Framework.Server]]

 

0:009> !do 000000018003e630

Name: System.Collections.Generic.Dictionary`2[[System.Guid, mscorlib],[Microsoft.TeamFoundation.Framework.Server.TeamFoundationPerformanceCounters, Microsoft.TeamFoundation.Framework.Server]]

MethodTable: 000007feeed0b9c0

EEClass: 000007fef6368220

Size: 80(0x50) bytes

File: C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll

Fields:

              MT Field Offset Type VT Attr Value Name

000007fef69516e8 4000c5a 8 System.Int32[] 0 instance 000000018003ea90 buckets

000007fef74448a8 4000c5b 10 ...non, mscorlib]][] 0 instance 000000018003eac8 entries

000007fef6951748 4000c5c 38 System.Int32 1 instance 7 count

000007fef6951748 4000c5d 3c System.Int32 1 instance 7 version

000007fef6951748 4000c5e 40 System.Int32 1 instance -1 freeList

000007fef6951748 4000c5f 44 System.Int32 1 instance 0 freeCount

000007fef698f1a8 4000c60 18 ....Guid, mscorlib]] 0 instance 000000038000dc90 comparer

000007fef74bfd40 4000c61 20 ...Canon, mscorlib]] 0 instance 0000000000000000 keys

000007fef74bd380 4000c62 28 ...Canon, mscorlib]] 0 instance 000000018206b690 values

000007fef694ef78 4000c63 30 System.Object 0 instance 0000000000000000 _syncRoot

0:009> !da 000000018003eac8

Name: System.Collections.Generic.Dictionary`2+Entry[[System.Guid, mscorlib],[Microsoft.TeamFoundation.Framework.Server.TeamFoundationPerformanceCounters, Microsoft.TeamFoundation.Framework.Server]][]

MethodTable: 000007fe984b5918

EEClass: 000007fe984b5870

Size: 248(0xf8) bytes

Array: Rank 1, Number of elements 7, Type VALUETYPE

Element Methodtable: 000007fe984b57d8

[0] 000000018003ead8

[1] 000000018003eaf8

[2] 000000018003eb18

[3] 000000018003eb38

[4] 000000018003eb58

[5] 000000018003eb78

[6] 000000018003eb98

0:009> !dumpvc 000007fe984b57d8 000000018003ead8

Name: System.Collections.Generic.Dictionary`2+Entry[[System.Guid, mscorlib],[Microsoft.TeamFoundation.Framework.Server.TeamFoundationPerformanceCounters, Microsoft.TeamFoundation.Framework.Server]]

MethodTable: 000007fe984b57d8

EEClass: 000007fef6368348

Size: 48(0x30) bytes

File: C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll

Fields:

              MT Field Offset Type VT Attr Value Name

000007fef6951748 4000c68 8 System.Int32 1 instance 1348927451 hashCode

000007fef6951748 4000c69 c System.Int32 1 instance -1 next

000007fef69497e0 4000c6a 10 System.Guid 1 instance 000000018003eae8 key

000007fef6953be8 4000c6b 0 System.__Canon 0 instance 000000018003e890 value

 

0:009> !do 000000018003e890

Name: Microsoft.TeamFoundation.Framework.Server.TeamFoundationPerformanceCounters

MethodTable: 000007feef604a38

EEClass: 000007feeed727e8

Size: 64(0x40) bytes

File: C:\Program Files\Microsoft Team Foundation Server 12.0\Application Tier\TfsJobAgent\Microsoft.TeamFoundation.Framework.Server.dll

Fields:

              MT Field Offset Type VT Attr Value Name

000007fef6955a00 4000ec4 8 ....ReaderWriterLock 0 instance 000000018003e8d0 m_serializationObject

000007fef694e998 4000ec5 10 System.String 0 instance 0000000000000000 m_counterCategoryName

000007fef4c6e4d0 4000ec6 18 ...ounterSetInstance 0 instance 0000000000000000 m_defaultCounterSetInstance

000007feeecb7a58 4000ec7 20 ...ramework.Server]] 0 instance 0000000000000000 m_counterSetInstances

000007fef4c6e430 4000ec8 28 ...ceData.CounterSet 0 instance 0000000000000000 m_counterSet

000007fef6932398 4000ec9 30 System.Object[] 0 instance 0000000000000000 m_counters

Comments

  • Anonymous
    October 08, 2014
    Thanks it was very helpful...