假设.net托管应用程序通过InterOP与非托管组件进行交互。如果我必须调试内存问题;确切的非托管组件分配内存的位置?它是GC使用的堆(我怀疑)还是其他一些区域?我正在做Windbg调试,想知道我是否可以通过SoS命令看看非托管组件的分配,比如!dumpheap?
答案 0 :(得分:3)
在Windbg中,您可以!heap
使用inspect native heap memory。 GC(托管)堆与本机代码堆使用不相交,但在某种程度上我的假设是托管堆必须映射(在CLR内)到一个或多个本机堆上。
SoS纯粹用于托管代码调试 - WinDbg首先是本机代码调试工具。
umdh.exe也可能有用,但我没有在混合模式的应用中尝试过这种方法。