【问题标题】:How do I set a Data Breakpoint in mixed( C#/C++ ) debugging?如何在混合(C#/C++)调试中设置数据断点?
【发布时间】:2010-09-19 14:11:18
【问题描述】:

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

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

这里面还有吗?

【问题讨论】:

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


    【解决方案1】:

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

    在运行纯本机代码以外的任何内容时,Visual Studio 会禁用数据断点。请参阅this 帖子,了解 VS 项目经理的部分解释。

    【讨论】:

    • "部分解释" = 团队从未为此编写代码。
    【解决方案2】:

    所以我必须这样做:

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

    是的

    【讨论】:

    • 快速说明:正如您在问题中提到的,您的程序必须处于“中断”状态才能使菜单选项可用。
    • 我对这个答案的评价永远不够。再次感谢您提供如此详细的程序。
    • 我希望这对我有用......而不是我在启动时得到这个:An unhandled exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll Additional information: 'The invocation of the constructor on type 'ATMapExec2WPF.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'. 显然,我的 XAML 文件没有任何问题......它可以正常工作。不过,这不是你的错……这是 WPF 调试的噩梦。
    • 步骤 2 和 3 是在原生项目的属性窗口,Debug 选项卡中设置的。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-11-06
        • 2011-01-05
        • 2022-01-06
        • 1970-01-01
        • 2020-05-09
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2021-09-26
        相关资源
        最近更新 更多