如何在混合(C#/ C ++)调试中设置数据断点?

时间:2008-10-28 13:39:29

标签: .net visual-studio-2008 debugging mixed-mode

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

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

到底有没有?

4 个答案:

答案 0 :(得分:32)

为此,我必须:

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

yech

答案 1 :(得分:16)

要在混合模式流程的本机部分设置数据断点,请参阅answer posted by jyoung

Visual Studio在运行纯粹的本机代码时禁用数据断点。有关VS计划管理员的部分解释,请参阅this帖子。

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:2)

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

If (Condition)
    System.Diagnostics.Debugger.Break()