c# - 如何在满足条件时进入 Debug模式?

标签 c# visual-studio-2010 visual-studio debugging conditional-statements

有没有办法在满足特定条件时进入 Debug模式?

例如,假设我想在 i == 1 变为 true 的那一行进入 Debug模式:

using System;

namespace ConditionalDebug
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var r = new Random();
            var i = r.Next(2);
            i += r.Next(2);
            i += r.Next(2);
            i += r.Next(2);
            i += r.Next(2);
            i = 1;
            Console.WriteLine(i);
        }
    }
}

我知道可以设置条件断点,例如:

conditional breakpoint

但我当然不能使用它,因为我必须为代码中的每一行添加一个条件断点,其中条件值可能会发生变化,这在实际应用程序中会变得非常困惑。

那么,有没有办法全局设置条件 i == 1 以便调试器在满足条件的行上中断?

感谢您的帮助!

最佳答案

简短的回答是“否”

长答案是“不是真的,但有点”。您可以做一些事情来接近您想要的行为。

  • 您可以使用“监视”窗口并手动单步执行代码并查看它的变化。
  • 您可以找到该变量的所有引用并隔离所有可以更改您的变量并放置断点的语句。
  • 您可以执行上述操作,但使用包装函数(或使其成为属性)并仅通过该函数(或属性 setter )设置变量的值,然后您可以在一个点上设置条件断点比较旧值/新值。
  • 您可以在每一行上放置一个断点并同时为所有行设置条件。您可以通过编写 VS 插件或宏来实现自动化。
  • 这超出了我的范围 - 但我确信可以做一些非常复杂和令人敬畏的事情,比如编写您自己的调试器并实现您的“每当 X 更改时中断”。

关于c# - 如何在满足条件时进入 Debug模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945984/

相关文章:

c# - 使用Nest(Elasticsearch)进行方面搜索

c# - 来自 C# : Routine not found 的 ODBC 和 DB2 存储过程

c++ - 无法在 vc++ mfc 应用程序中分配 1.5GB 内存

c++ - 同时运行两个函数

c++ - 为什么 wchar_t* 变量被破坏了?

visual-studio-2010 - 如何在不使用 Visual Studio 的情况下编译 DLL?

c# - 包含总是假的,因为引用不一样?

c# - 如何在控件中按 Tab 键顺序查找第一个控件?

c++ - 编译类模板成员函数时出错

visual-studio - 是否可以更改 VisualHg 调用 hg.exe 的速率?