查看 !address REGionUsageIsVAD WinDBG 中的实际数据

Viewing the actual data in !address REGionUsageIsVAD WinDBG

本文关键字:数据 WinDBG address REGionUsageIsVAD 查看      更新时间:2023-10-16

我使用了!address -RegionusageIsVAD,发现了一个非常大的条目。

如何查看谁编写了此数据以及该特定地址中有哪些数据?

示例输出:

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

所以我想看看这个地址里有什么数据,谁分配了它。

High RegionUsageIsVAD 通常来自 2 个原因:

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