【问题标题】:How can I make the Visual Studio debugger stop breaking at data breakpoints which are set to run a macro and continue?如何使 Visual Studio 调试器在设置为运行宏并继续的数据断点处停止中断?
【发布时间】:2010-09-16 04:39:33
【问题描述】:

我在使用 Visual Studio 2005 时遇到了一个奇怪的问题:我有一个设置为运行宏并继续的数据断点(也就是说,我选择了一个宏并选中 Continue Execution。)

现在,我不是在数据断点(实际上是跟踪点)中的值发生变化时静默运行宏,而是首先收到一个消息框,通知我断点已被击中,并且宏仅在我击中 OK 后运行。

我正在调试的代码对时间敏感,因此无法调试。有没有办法禁用弹出的消息框?

响应 cmets:宏本身可以为空,也可以是 Microsoft 提供的任何示例宏 - 没有区别。

【问题讨论】:

  • 即使宏为空,或者我选择了示例宏之一,也会发生这种情况。所以宏本身是无关紧要的。

标签: debugging visual-studio-2005 macros breakpoints


【解决方案1】:

我的机器上没有 vs.net 2005。
所以,我在这里推测。

执行路线是什么?

它是否试图评估一个属性?
读取属性时是否设置了条件断点? (即在读取属性时中断?)

尝试删除与当前执行行相关的其他断点并重新添加跟踪点。

【讨论】:

  • 这是一个数据断点 - 当从代码中的任何位置写入内存位置时它会中断,因此它与代码行没有真正关联。这是本机 C++ 代码 - 我不确定您所说的“属性”是什么意思,但我觉得这无关紧要。删除断点并没有什么不同。
  • 是否设置了断点(在调试代码时出现的本机指令窗口内)?有一个选项可以查看正在执行的本机指令是什么,我想也可以在那里设置断点。是这样吗?
  • 没有。这是一个数据断点,因此它与特定指令无关 - 调试器无处放置 int 3 指令。数据断点通常使用 CPU 的调试寄存器 (DR0-DR3) 实现。
【解决方案2】:

它也为我做这件事。根据您设置“继续执行”选项的方式,该行为似乎有些不同,所以我怀疑这种行为(尽管很痛苦)可能是设计使然。或者它可能是一个错误,但在任何一种情况下你都可能被卡住。

另一种方法可能是使用 windbg 或其他 Windows debugging tools 之一,它们也支持数据断点。它们需要一点时间来适应,并且不像 Visual Studio 调试器那样用户友好,但它们非常强大。 “ba”命令创建一个数据断点,您可以对调试器进行编程以在断点被命中时执行特定命令。 This article 提供了有关这些调试器的一些很好的介绍性信息,the Q & A section near the end 提供了一个示例,说明了在达到面包点时如何执行操作。

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 2011-07-02
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多