在!地址REGIONUsageIsVAD WinDBG中查看实际数据

时间:2011-05-17 14:37:54

标签: c++ debugging windbg

我使用!address -RegionusageIsVAD并找到了一个非常大的条目。

如何查看撰写此数据的人以及该特定地址中的数据?

Exmaple输出:

099230000 : 099230000 - 01000000
                Type     00020000 MEM_PRIVATE
                Protect  00000004 PAGE_READWRITE
                State    00001000 MEM_COMMIT
                Usage    RegionUsageIsVAD

所以我想知道这个地址中有哪些数据以及谁分配了它。

1 个答案:

答案 0 :(得分:4)

High RegionUsageIsVAD通常有两个原因:

  • 这是一个.NET应用程序。在这种情况下,CLR分配一块内存并在其中执行自己的分配。您可以使用sos WinDbg扩展来解决此类问题,并查看是否有许多对象仍处于活动状态。
  • 这不是.NET应用程序。在这种情况下,应用程序调用VirtualAlloc来分配一块内存。由于无法为这种分配记录回溯,因此可以在VirtualAlloc上放置一个断点并为每次调用转储堆栈(bp kernel32!VirtualAlloc“kb; gc;”)。这可能会提示您来电的来源。