2011-05-17 59 views
1

我使用了!address -RegionusageIsVAD,发现一个非常大的条目。查看地址中的实际数据REGionUsageIsVAD WinDBG

如何查看谁写了这些数据以及哪些数据在特定地址中?

〔实施例输出:

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

所以我想看到谁分配的是什么数据,该地址和。

回答

4

高RegionUsageIsVAD通常来自两个原因:

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