Visual Studio调试器自动变量赋值

时间:2011-08-03 14:35:25

标签: c# visual-studio debugging

是的,我看到了另一个主题:Visual Studio Debugger - Automatic Variable Assignment

但我今天需要一个解决方案,在我看到它之前找到一个解决方案,我想知道那里是否有更好的解决方案?

我的情况: 我有一个实体列表,我根据很多因素设置了一些与政策相关的属性。但是它还没有实现,或者我只是想在实体有权利时测试UI,何时不能(尽可能快地更改实际工作)。

所以我将实体设置为好像,所以我可以用这个来测试UI。但我不想破坏列表中的每个元素,并将标志从true更改为false(以测试其他情况)。我找到了一种自动从调试器更改变量的方法。我提出了这个解决方案:

  1. 设置断点
  2. 为它设置一个条件,这是一个'假的',但它会改变变量的值
  3. 以调试模式运行
  4. 如果我需要案例1.我启用断点,如果我需要另一个断点,我禁用断点
  5. 简化示例:

    namespace AutoVariable
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    new Program().Entrance();
                    Console.ReadLine();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error: {0}", e.Message);
                }
            }
    
            public void Entrance()
            {
                var entities = new List<Entity>
                {
                    new Entity() { Name = "A" },
                    new Entity() { Name = "B" },
                    new Entity() { Name = "C" }
                };
    
                entities.ForEach(setRight);
                entities.ForEach(Console.WriteLine);
            }
    
            protected void setRight(Entity entity)
            {
                //not implemented
                bool hasRight = true;
                entity.HasRight = hasRight;
            }
        }
    
        class Entity
        {
            public bool HasRight { get; set; }
    
            public string Name { get; set; }
    
            public override string ToString()
            {
                return string.Format("{0} - {1}", Name, HasRight);
            }
        }
    }
    

    我将条件断点设置为:entity.HasRight = hasRight;

    有这个条件:(hasRight = false)

    所以hasRight将为false并且断点永远不会受到影响。

    但它也可用于其他情况,例如在Jason Irwin的帖子中,你可以使用类似的东西:(userName = "Jason").Length < 1

    所以我的问题是它是一个很好的解决方案,或者我错过了'原生'调试器工具集中的某些内容?

    提前致谢!

    内格拉

1 个答案:

答案 0 :(得分:1)

您想使用调试器执行操作吗?有一个叫Trace Points的东西。

这里解释: http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspx 并转到“TracePoints - 遇到BreakPoint时的自定义操作”

这就是你需要的吗?