混合模式调试(C++、C#、VB)
Posted
技术标签:
【中文标题】混合模式调试(C++、C#、VB)【英文标题】:Debugging in mixed-mode (C++, C#, VB) 【发布时间】:2020-12-01 12:23:27 【问题描述】:This article 讨论启用混合模式调试。这允许托管应用程序调用本地 DLL,或本地应用程序调用托管 DLL。
为我的解决方案中的所有项目启用此功能是否会产生负面影响?例如,这是否会对性能、构建时间或构建期间访问磁盘的文件数量等产生负面影响?
上述文章没有讨论这个。
【问题讨论】:
在调试时,在不调试的情况下运行代码通常不会获得相同的性能。当您尝试运行代码而不进行调试并且它不起作用时,您只会遇到问题。那你要弄清楚为什么调试没有发现错误。 良好的托管模式可以这么说对设计性能产生负面影响,但我相信你知道这一点。 【参考方案1】:构建时间:
独立于混合模式方面,常见调试配置的构建时间问题对于您的本机 dll/部分的 PDB 变得非常大的情况通常是合理的(但与常见的发布配置相比,通常相对无关紧要)。毫无疑问,这取决于许多方面(链接器配置、硬件、并行链接?)。以混合模式为重点,不应该有任何进一步的相关影响原因,因为托管部分无论如何都会提供 PDB 相应的信息。
运行时:
取决于很多方面。但是,是的,总的来说,至少与纯本机调试相比,您会在这里观察到(负面)影响,重点是性能和内存使用(!)。例如,至少以前的 MS-Debuggers(在 VS 2017 之前)在处理混合模式下的大型调试会话时存在几个相当严重的问题。一个常见的 - 对于初学者来说有时不容易看到 - 这里的性能下降器同样是托管和本机部分上的条件断点 - 迫使调试器非常频繁地切换其操作上下文(条件断点与“经典”断点具有几乎相同的性能影响) .
【讨论】:
以上是关于混合模式调试(C++、C#、VB)的主要内容,如果未能解决你的问题,请参考以下文章
FlutterFlutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )