通过COM从C 解决方案进行调试C#DLL

Debug C# dll from C++ solution via COM

本文关键字:调试 C#DLL 解决方案 COM 通过      更新时间:2023-10-16

我有一个C 解决方案。启动项目是一个EXE。在解决方案中,有一个数字C#dll(targinaling .NET Framework 2.0)为COM Interop注册。当我在C#代码中放置断点时,我会使用"No native symbols in symbol file"

获得空心的红色断点

我尝试将Project Property Pages -> Debugging -> Debugger Type设置为调用COM方法的启动项目。

我已经检查了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

我能够通过以下内容从VS2008中的C 项目调试我的C#dll:

在C 项目的属性中,goto配置属性 ->调试。将"调试类型"设置为混合。"附件"应设置为no。

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

我知道它有点旧,但我找到了一个实用的解决方案。

我使用使用C#com-object的C 应用程序时也有相同的问题。我在C 和C#侧的Visual Studio中尝试了几个设置。直到我尝试手动启动调试器之前,没有任何帮助。

您可以使用

Debugger.Launch();

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

问候

我不确定这会有所帮助,但我们与C#和C 合作很多。我发现,通过将C 项目和C#项目放置在同一解决方案中,并在C#项目中启用"本机调试",这是可能的。然后,在调试时,我能够在他们之间来回跳动。