7

我有一个 C++ 解决方案。启动项目是一个exe。在解决方案中,有许多为 COM 互操作注册的 C# dll(针对 .NET Framework 2.0)。当我在 C# 代码中放置一个断点时,我得到空心红色断点"No native symbols in symbol file"

我尝试Project Property Pages -> Debugging -> Debugger Type在调用 COM 方法的启动项目上设置为 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# 代码中都设置了断点。

所以我有我的解决方法,但我认为我是否可以通过附加到进程来做到这一点 - 我应该能够通过调试来做到这一点。

我怎样才能通过做来击中我的 C# 断点Debug -> Start Debugging

4

3 回答 3

4

通过执行以下操作,我能够从 VS2008 中的 C++ 项目中调试我的 C# dll:

在 C++ 项目的属性中,转到配置属性 -> 调试。将“调试器类型”设置为混合。“附加”应设置为否。

在您的 C# 项目属性中,在“调试”选项卡中,将“启动外部程序”设置为 C++ 项目的可执行文件。

于 2013-06-05T18:36:21.047 回答
2

我知道它有点旧,但我找到了解决这个问题的实用方法。

我在使用使用 C# COM-Object 的 C++ 应用程序时遇到了同样的问题。我在 C++ 和 C# 端尝试了 Visual Studio 中的几个设置。在我尝试手动启动调试器之前没有任何帮助。

您可以使用

Debugger.Launch();

在 C# DLL 上手动启动调试器。我知道这不是最好的,而是一种实用的方法。在以后的生产环境中,您必须删除调试器启动功能:)。

问候

于 2014-10-14T14:57:07.327 回答
1

我不确定这是否会有所帮助,但我们经常使用 C# 和 C++。我发现这可以通过将 C++ 项目和 C# 项目放在同一个解决方案中并在 C# 项目中启用“本机调试”来实现。然后我能够在调试时在它们之间来回跳转。

于 2013-01-04T16:40:25.233 回答