假设 .net 托管应用程序通过 InterOP 与非托管组件交互。如果我必须调试内存问题;非托管组件在哪里分配内存?它是 GC 使用的同一个堆(我怀疑)还是其他一些区域?我正在做 Windbg 调试,想知道我是否可以通过像 !dumpheap 这样的 SoS 命令查看非托管组件的分配?
最佳答案
在 Windbg 中,您可以使用 !heap
至 inspect native heap memory . GC(托管)堆与 native 代码堆使用脱节,尽管在某种程度上我假设托管堆必须(在 CLR 内)映射到一个或多个 native 堆。
SoS 纯粹用于托管代码调试 - WinDbg 首先是 native 代码调试工具。
umdh.exe也可能有用,但我还没有在混合模式应用程序中尝试过。
关于.net - 非托管组件用于分配/分配的内存区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460524/