从 .NET 应用程序调试 C++ 代码时出现问题

Posted

技术标签:

【中文标题】从 .NET 应用程序调试 C++ 代码时出现问题【英文标题】:Problem debugging C++ code from .NET application 【发布时间】:2011-06-29 11:24:54 【问题描述】:

我有使用几个 c++ 库的 .NET 服务 (C#)。我迫切需要使用 C++ 方法,但是当我设置断点时,它们会在运行时被禁用。

在哪里看?

我在 C++ 项目设置中设置了“附加调试器”,但这似乎并没有改变。

请指教。在哪里看?

如果有人关心,图书馆是quickfix engine。

【问题讨论】:

【参考方案1】:

您的项目需要enable unmanaged code debugging。为此:

    在解决方案资源管理器中右键单击您的项目,然后单击“属性”。 在“调试”选项卡中,选中标有“启用非托管代码调试”的复选框。

   

默认情况下,面向 .NET Framework 的项目将仅调试托管代码。您必须明确告诉它您要调试非托管代码。

如果这不能解决问题,还要确保在“选项”对话框中的调试设置中未启用“仅启用我的代码”设置。


当我附加到进程时不起作用。只有在我从工作室跑步时才有效

正确。当您附加到进程时,您的项目不会[必然] 加载,并且 Visual Studio 不会关注其设置。

在这种情况下,您需要在“附加到进程”对话框中设置适当的选项。这样做:

    单击标有“附加到:”行末尾的“选择...”按钮。 在出现的对话框中,除了“托管”代码的适当版本之外,确保选中“本机”。

     

【讨论】:

您的意思是主应用程序项目(Main() 所在的位置)吗? @Captain:我不太确定你在问什么。您需要为您的 startup 项目启用此功能。我假设那是 .NET 应用程序。 附加到进程时不起作用。仅在我从工作室跑步时才有效【参考方案2】:

转到Project Properties -> Debug -> 并设置复选框

Enable unmanaged code debugging

HTH

【讨论】:

以上是关于从 .NET 应用程序调试 C++ 代码时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

调试 C++ 程序时出现奇怪的 gdb 消息

尝试使用 Visual Studio 2010 调试 dll (C++) 时出现错误消息

远程调试 .Net 应用程序“没有为此文档加载任何符号”时出现问题。

Protobuf-net 使用嵌套数据反序列化时出现无效的线型异常(C++ 到 C#)

每当我调试时出现几个错误

VISUAL C++调试时出现LNK2001 与 LNK1120错误