满足条件时如何进入调试模式?

时间:2012-06-08 09:09:30

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

当满足某个条件时,有没有办法进入调试模式?

例如,假设我想在i == 1变为真的行上进入调试模式:

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,以便调试器在符合条件的行上中断?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

简短的回答是'不'

答案很长'不是真的,而是有点'。您可以采取一些措施来接近您想要的行为。

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

答案 1 :(得分:1)

在VS的断点窗口中,可以选择多个断点,然后用鼠标右键可以一步设置两个断点。

你可以吗?

答案 2 :(得分:1)

我会说不,如果你考虑一下,你要求调试器验证我在范围内的每一行代码,虽然我会看这个,看看是否有人可以想到一个解决方法,因为它会很有趣见:)