代码之家  ›  专栏  ›  技术社区  ›  Lasse V. Karlsen

我设法打破了debuggernousercode属性,有人经历过这个吗?

  •  1
  • Lasse V. Karlsen  · 技术社区  · 15 年前

    看看下面的程序。

    这些注释显示了我使用Visual Studio 2008时的执行顺序,以及启动和单步执行程序时只点击F11(单步执行)调试热键。第一列是我现在实际经历的,第二列是我预期会发生的。

    注意,类中用 DebuggerNonUserCode 属性,而具有 DebuggerStepThrough 不是。我希望调试器跳过这两个步骤。这以前没有发生过。我已经用这个属性标记了很多类,因为我不想在类库中调试新特性时经历所有的噪声,但是现在调试器直接进入它们,就像属性不在那里一样。

    有人经历过吗?我在Visual Studio的某个地方搞砸了一个选项吗?

    using System;
    using System.Diagnostics;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {                                   // 1             // 1
                new C1().Test();                // 2, 5          // 2
                new C2().Test();                // 6             // 3
            }                                   // 7             // 4
        }
    
        [DebuggerNonUserCode]
        public class C1
        {
            [DebuggerNonUserCode]
            public void Test()
            {                                   // 3
            }                                   // 4
        }
    
        [DebuggerStepThrough]
        public class C2
        {
            [DebuggerStepThrough]
            public void Test()
            {
            }
        }
    }
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   ChaosPandion    15 年前

    当出现异常时,属性debuggernousercode不会在方法调用上中断。代码将在堆栈中的下一个catch上中断。1

    DebuggerNonUserCode

        2
  •  3
  •   Scott Rippey    14 年前

    您可能禁用了“仅我的代码”。此设置忽略 DebuggerNonUserCode 但是 DebuggerStepThrough 仍然遵守。

    要解决此问题,请转到 Tools > Options > Debugging > "Enable Just My Code"

    有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/h5e30exc.aspx

    另外,值得注意的是 调试程序步骤 仍将在断点处停止。