22

我在 C# 中启动我的程序,然后调用一些非托管 C++。

当我在非托管 C++ 中换行时,“新数据断点”菜单项显示为灰色。

有没有办法解决?

4

5 回答 5

32

所以要做到这一点,我必须:

  • 将非托管dll设置为启动项目
  • 将托管程序设置为启动命令
  • 将调试模式设置为Native
  • “中断执行”或打断点,使您处于“调试”状态

耶赫

于 2008-10-28T15:03:25.383 回答
16

要在混合模式进程的本机部分设置数据断点,请参阅jyoung 发布的答案

运行纯本机代码以外的任何内容时,Visual Studio 都会禁用数据断点。有关VS 项目经理的部分解释,请参阅这篇文章。

于 2008-10-28T14:27:41.353 回答
4

建议的解决方案并非始终有效。即使在本机模式下调试时,程序在本机代码段中中断,当尝试设置“新数据断点”时,我也会弹出“无法设置断点。公共语言运行时不支持数据断点”

另一种方法是直接从代码中添加数据断点。请参阅此处的文章。

这在混合模式下效果很好,它只需要激活本机调试模式(如上所述)

于 2013-05-07T22:55:39.727 回答
2

一个非常有用的技巧是在特殊情况下从代码中调用断点:

If (Condition)
    System.Diagnostics.Debugger.Break()
于 2016-01-10T17:27:15.723 回答
0

另一种方法是附加到过程中。

无需调试器即可正常构建和运行您的软件。

然后在 Visual Studio 中,在顶部菜单中的“Debug / Attach to Process”,找到该进程,在列表中选择它。然后,在“附加到”面板的右侧,单击“选择...”按钮,单击“调试这些代码类型”单选按钮,取消选中除本机以外的所有内容,单击确定,单击附加。

在此处输入图像描述

然后使用 Debug / Break All 命令中断执行,或者在应用程序的 C++ 部分中的某处击中正常断点。然后,您将能够使用数据断点。

于 2022-02-15T01:42:43.597 回答