.net - 非托管组件用于分配/分配的内存区域

标签 .net windbg sos unmanaged-memory

假设 .net 托管应用程序通过 InterOP 与非托管组件交互。如果我必须调试内存问题;非托管组件在哪里分配内存?它是 GC 使用的同一个堆(我怀疑)还是其他一些区域?我正在做 Windbg 调试,想知道我是否可以通过像 !dumpheap 这样的 SoS 命令查看非托管组件的分配?

最佳答案

在 Windbg 中,您可以使用 !heapinspect native heap memory . GC(托管)堆与 native 代码堆使用脱节,尽管在某种程度上我假设托管堆必须(在 CLR 内)映射到一个或多个 native 堆。

SoS 纯粹用于托管代码调试 - WinDbg 首先是 native 代码调试工具。

umdh.exe也可能有用,但我还没有在混合模式应用程序中尝试过。

关于.net - 非托管组件用于分配/分配的内存区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460524/

相关文章:

c# - 如何将类元数据转换为 JSON 字符串

Windbg:如何在线程执行命令中显示线程详细信息?

debugging - 是否有 Windbg 命令来确定进程是 32 位还是 64 位?

c# - WinDbg/SOS : Explanation of ! SyncBlk 输出

c# - 将 KeyVault secret 传递给 VSTS 中的 .net core 2 xUnit/MsTest

c# - 在 UserControl 中使用泛型类型的正确方法是什么?

c# - IPAddress.Parse() 使用 IPv4 上的端口

windbg - 找不到...转储文件,Win32 错误 0n87

javascript - 如何在 WinDbg 中引用不同脚本中定义的 JavaScript 函数?

windbg - Livekd 文档和教程