gpt4 book ai didi

visual-studio-2010 - DebuggerStepThrough 被忽略

转载 作者:行者123 更新时间:2023-12-04 08:46:11 24 4
gpt4 key购买 nike

我最近注意到 Visual Studio 2010 调试器不断跳转到这个用 [DebuggerStepThrough] 标记的方法中。属性。

Visual Studio 2010 stepping into a DebuggerStepThrough area

调用堆栈看起来像这样:

  • Page.OnLoad 在标记为 [DebuggerStepThrough] 的类中调用方法 IsSubclassOfGeneric .
  • IsSubclassOfGeneric 如图所示调用 GetHierarchy,将 lambda 表达式传递给 System.Linq.Enumerable.Any 扩展。
  • Visual Studio 进入如上所示的方法。

  • 我刚刚用 foreach 循环替换了 Linq 调用,如下所示,但无济于事:

    Call to GetHierarchy

    这有点烦人,因为这个方法被频繁调用,我不明白为什么该属性被忽略。

    最佳答案

    试试这个简单的控制台应用程序,在指示的行上放置断点,运行调试器并在第一个断点处,按 step into (F11)。它应该错过第二个断点。否则,如果可能是视觉工作室设置/扩展把事情搞砸了。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;

    namespace tmp {
    class Program {
    static void Main(string[] args) {
    IEnumerable<Type> types = typeof(System.IO.IOException).GetHierarchy(typeof(System.Exception)); //break point here
    int i = 0;
    }
    }
    static class Ext {
    //[DebuggerStepThrough]
    //[DebuggerNonUserCode]
    //[DebuggerStepperBoundary]
    public static IEnumerable<Type> GetHierarchy(this Type type, Type limit) {
    if (type == null) { //break point here
    throw new Exception();
    }
    do {
    yield return type;
    if (type == limit) {
    yield break;
    }
    } while ((type = type.BaseType) != null);
    }

    [DebuggerStepThrough]
    public static IEnumerable<Type> GetHierarchy2(this Type type, Type limit) {
    if (type == null) { //break point here
    throw new Exception();
    }
    IList<Type> types = new List<Type>();
    do {
    types.Add(type);
    if (type == limit) {
    break;
    }
    } while ((type = type.BaseType) != null);
    return types;
    }
    }
    }

    编辑

    其实我认为这与 yield 语句有关。如果我尝试构建一个列表 (GetHierarchy2),我对 DebuggerStepThrough 属性没有问题

    关于visual-studio-2010 - DebuggerStepThrough 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4559034/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com