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

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

有没有办法解决?

有帮助吗?

解决方案

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

Visual Studio在运行纯粹的本机代码时禁用数据断点。请参见从VS项目经理发布部分解释原因。

其他提示

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

  • 将非托管dll设置为启动项目
  • 将托管程序设置为启动命令
  • 将调试模式设置为 本国的
  • “中断执行”或命中断点,以便处于“调试”状态

耶赫

建议的解决方案不会一直有效。即使在Native模式下进行调试时,如果程序在Native代码段中被破坏,当尝试设置'New Data Breakpoint'时,我会弹出 "断点无法设置。公共语言运行时“

不支持数据断点

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

这在混合模式下运行良好,它只需要激活Native调试模式(如上所述)

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

If (Condition)
    System.Diagnostics.Debugger.Break()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top