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

标签 c++ debugging windbg

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

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

示例输出:

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

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

最佳答案

高 RegionUsageIsVAD 通常来自 2 个原因:

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

关于c++ - 查看 !address REGionUsageIsVAD WinDBG 中的实际数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032482/

相关文章:

javascript - 错误监控缩小的 javascript

python - 有没有办法使用 pydev 调试子进程?

windbg - 将WinDbg设置为默认调试器

Windbg 帮助缺少 kernel32 函数

c++ - zmq_send() 线程安全吗?

c++ - 如何在多个架构中将 ccache 与 gcc -march=native 一起使用?

javascript - 仅在页面加载时调试 Jquery

c++ - 使用 CXX 桥从 C++ 调用 Rust

c++ - 程序运行时隐藏控制台的独立于平台的方法

windbg - 转储中的进程信息