繁体   English   中英

通过COM从C ++解决方案调试C#dll

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM