【问题标题】:Debugging a .NET COM DLL loaded by unmanaged C++ binary in Visual Studio在 Visual Studio 中调试由非托管 C++ 二进制文件加载的 .NET COM DLL
【发布时间】:2015-03-05 06:23:07
【问题描述】:

我正在使用 VS2010。我有一个用 C++ 编写的非托管 EXE,它使用 .NET COM 组件,它也是同一解决方案的一部分。我知道 COM 对象已成功创建,因为 CoCreateInstance 返回没有错误。然而,组件符号没有加载(我还注意到无法在 .NET 项目源文件中创建断点),所以我无法进入对象方法的代码。

我试图将 .NET DLL 的 PDB 复制到 EXE 的相同输出目录中,但它也没有帮助。解决方案中的所有项目都是 x64 并且调试模式设置为混合。

如果这很重要,DLL 是使用命令 regasm /codebase 注册的

有什么想法吗?谢谢。

【问题讨论】:

    标签: c++ .net visual-studio-2010 com interop


    【解决方案1】:

    是的,您必须启用托管调试。 Visual Studio(至少 2008 年和 2010 年——不知道更高版本)的一个问题是您只能使用 32 位进程同时调试本机代码和托管代码。对于 64 位进程,您必须调试一种类型或另一种类型,但不能同时调试两种类型。我想您也许可以启动另一个 Visual Studio 实例并使用一个实例调试 Native 并使用另一个实例进行托管。

    在您的项目设置下,转到“配置属性”-“调试”页面。在右侧转到调试器类型并选择混合。

    【讨论】:

    • 谢谢,我编辑了原帖,调试器类型已经设置为混合。正如您所建议的,问题出在 x64 上。关于您的建议,我不能将 2 个 VS 调试器附加到同一个进程,但是当我想调试特定于 x64 的功能时,我会在托管模式和本机模式下交替调试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多