WINDBG, как просмотреть содержимое массива? - PullRequest
21 голосов
/ 04 февраля 2010

Я использую WINDBG для анализа файла дампа для программы, которая демонстрирует слишком высокое использование памяти.

Один из задействованных объектов - это удержание массива объектов, ссылающегося на множество объектов, которые я бы использовалхотел бы посмотреть, чтобы попытаться выяснить, почему они были выделены.

Вот что я пробовал:

Во-первых, моя коллекция объектов ServiceContainer:

0:000> !do 05633014 
Name: System.Collections.Generic.List`1[[LVK.IoC.ServiceContainer, LVK.Core]]
MethodTable: 08b3c7fc
EEClass: 6f70ca78
Size: 24(0x18) bytes
 (C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
6f924324  40009d8        4      System.Object[]  0 instance 1da226ec _items
6f952da0  40009d9        c         System.Int32  1 instance     5356 _size
6f952da0  40009da       10         System.Int32  1 instance     5538 _version
6f950770  40009db        8        System.Object  0 instance 00000000 _syncRoot
6f924324  40009dc        0      System.Object[]  0   shared   static _emptyArray
    >> Domain:Value dynamic statics NYI
 002b2a28:NotInit  <<

Массив _items - это тот, на который я хочу посмотреть, поэтому я ввел команду:

0:000> !do 1da226ec

, которая выдала:

Name: System.Object[]
MethodTable: 6f924324
EEClass: 6f70da64
Size: 32784(0x8010) bytes
Array: Rank 1, Number of elements 8192, Type CLASS
Element Type: LVK.IoC.ServiceContainer
Fields:
None

Глядя на сеть, я 'мы обнаружили признаки , что была опция -v, которую я мог бы использовать для чего-либо для получения значений массива, но это, похоже, не работает.

Как я смотрю на элементыэтого массива?

1 Ответ

28 голосов
/ 08 февраля 2010

Вы ищете

!da 1da226ec

Для сброса объектов массива.

...