4

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

4

1 回答 1

3

在 Windbg 中,您可以使用!heap检查本机堆内存。GC(托管)堆与本机代码堆的使用不相交,尽管在某种程度上我的假设是托管堆必须映射(在 CLR 内部)到一个或多个本机堆。

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

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

于 2011-06-23T21:07:37.913 回答