非托管组件用于分配/释放的内存区域

发布于 2024-11-16 16:24:53 字数 157 浏览 3 评论 0原文

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

Let's say a .net managed application interfacts with an unmanaged component via InterOP. If I have to debug a memory issue; where exactly unmanaged component allocates memory? Is it the same heap that is used by GC (which I doubt) or is it some other areas? I am doing Windbg debugging and wondering if I can look at allocation by unmanaged component via SoS commands like !dumpheap?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢望 2024-11-23 16:24:53

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

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

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

In Windbg you can use !heap to inspect native heap memory. The GC (managed) heap is disjoint from native code heap usage, though at some level my assumption is that the managed heap must be mapped (inside the CLR) onto one or more native heaps.

SoS is purely used for managed code debugging - WinDbg is first and foremost a native code debugging tool.

umdh.exe may also be useful, though I've not tried this in a mixed-mode app.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文