[英]Debug C# dll from C++ solution via COM
我有一个C ++解决方案。 启动项目是一个exe。 在解决方案中,有一些C#dll(针对.NET Framework 2.0)已注册COM interop。 当我在C#代码中放置一个断点时,我得到了空心的红色断点, "No native symbols in symbol file"
我已经尝试在调用COM方法的启动项目中将Project Property Pages -> Debugging -> Debugger Type
为Mixed。
我检查了Debug -> Windows -> Modules
。 它已加载我的dll,符号状态为"No native symbols in symbol file"
。
这不是世界末日,因为如果我执行Debug -> Start Without Debugging
然后Debug -> Attach to Process
,将Attach To:
更改为Managed (v2.0, v1.1, v1.0) code, Native code
。 然后我在C ++代码和C#代码中都遇到了断点。
所以我有我的解决方法,但我认为如果我可以通过附加到进程来做到 - 我应该能够通过调试来做到这一点。
如何通过Debug -> Start Debugging
来点击我的C#断点?
我可以通过执行以下操作从VS2008中的C ++项目调试我的C#dll:
在C ++项目的属性中,转到配置属性 - >调试。 将“调试器类型”设置为“混合”。 “附加”应设置为“否”。
在C#项目属性中的Debug选项卡中,将“Start External Program”设置为C ++项目的可执行文件。
我知道它有点旧,但我找到了解决问题的实用方法。
在使用使用C#COM-Object的C ++应用程序时遇到了同样的问题。 我在C ++和C#端的Visual Studio中尝试了几个设置。 在我尝试手动启动调试器之前没有任何帮助。
您可以使用
Debugger.Launch();
手动启动C#DLL上的调试器。 我知道这不是最好的,而是一种实用的方法。 在以后的生产环境中,您必须删除调试器启动功能:)。
问候
我不确定这是否有帮助,但我们使用C#和C ++工作很多。 我发现这可以通过将C ++项目和C#项目放在同一个解决方案中并在C#项目中启用“本机调试”来实现。 然后我可以在调试时在它们之间来回跳转。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.