c# - 从 c# 调试 c++ cli - 未命中 c++ 断点

标签 c# c++ .net debugging managed

我有一个引用 C++(托管、cli、64)库 vcxproj 的 C# win-exe-64 项目的解决方案。使用 Visual Studio 16.10.3。

一切正常,我可以在 C# 中使用 C++ 中的类。

问题是调试,单步执行 C++ 代码不起作用,并且 C++ 代码中的断点也没有命中。 C++ 中的断点显示“当前不会命中断点。尚未为此文档加载任何符号。”

在 ide 中,当我检查“模块”窗口时,它显示:此特定 dll 的“符号已加载”。在“进程”窗口中,它指示“调试:托管 (.NET 4.x)、 native ”

我已经尝试了很多设置:

  • IDE:工具-选项-调试-使用托管兼容模式:开/关
  • win-exe:属性:启用 native 代码调试:开/关
  • c++ lib:Properties.Debugging-Debugger 类型:混合(.net 框架)、 native

但是没有任何帮助,只是没有命中断点。

让我感到奇怪的是,c# 代码中的 c++ 类成员上的“Goto 定义”只会带来从元数据生成的类定义,而不会转到源代码。

有什么想法吗?

更新:屏幕截图显示从 exe 文件夹加载的模块窗口、dll 和 pdb。右侧窗口主进程 c# exe 调用左侧窗口中的 c++ dll。 modules window

最佳答案

有几种可能的解决方案。在这里我提到其中一些我遇到过的。

  1. 确保您的 VS 解决方案配置处于调试模式。

  2. 删除所有以前的调试点。 (调试->删除所有断点)

    从 VS 中卸载项目。 (或关闭VS)

    从文件资源管理器中删除所有以前的 bin、obj、x64/x84 文件夹。

    打开VS并在VS中加载项目。

    清理项目 -> 设置调试指针 -> 构建 -> 运行

  3. 调试 -> 选项 -> 常规 -> 删除选项“仅启用我的代码”的复选标记

    (如果第 1 点和第 2 点足够注意,它在某些情况下也适用)

当我遇到类似问题时,我按照第1点和第2点解决了它。

为了您的方便,我提供了我的可行 VS 的屏幕截图。

VS 调试 -> 选项 -> 常规 ->

VS Debug -> Options -> General ->

项目属性 -> 构建 ->

Project Properties -> Build ->

关于c# - 从 c# 调试 c++ cli - 未命中 c++ 断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68428842/

相关文章:

c# - WPF - 获取控件的位置不断返回 {0;0}

c# - 将 C# 转换为 vb.net 错误

c++ - 是否可以将 `B<get_item<0,Ts...>>` 更改为 `template_with_params<B, 1, ...Ts>` ?

.net - 在 TFS2010 中找不到框架 ".NETFramework,Version=v4.5"的引用程序集

.net - XAML -(键入)它有什么意义?

javascript - 如何将数据从 .NET Controller 显示到 React View ?

c# - 从分隔的数据库字符串字段中选择多选列表框中的项目

c++ - OpenGL 纹理颜色问题

c++ - Enet 客户端在时间问题后自动断开连接

java - 从 java .war 文件创建 dll