WINDBG,如何查看数组的内容?

Posted

技术标签:

【中文标题】WINDBG,如何查看数组的内容?【英文标题】:WINDBG, how to view the contents of an array? 【发布时间】:2011-01-13 00:25:13 【问题描述】:

我正在使用 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

查看网络,我发现 indications 有一个 -v 选项可以用于生成数组值,但这似乎不起作用。

如何查看这个数组的元素?

【问题讨论】:

【参考方案1】:

你正在寻找

!da 1da226ec

转储数组对象。

【讨论】:

详细信息:!da -details 1da226ec

以上是关于WINDBG,如何查看数组的内容?的主要内容,如果未能解决你的问题,请参考以下文章

windbg怎么查看寄存器的值

如何使用windbg查看C#某个线程的栈大小 ?

通过查看Windbg中的变量值去定位C++软件异常问题

WinDbg链接

WinDbg链接

windbg查看内存断点是物理地址还是虚拟地址