c# - DebuggerStepThrough 是否可以继承到自动生成的 IEnumerable 实现中?

标签 c# visual-studio debugging

DebuggerStepThrough属性允许您跳过进入某些方法/类/属性的步骤。

DebuggerStepThrough being ignored澄清了 c# 编译器不会将此属性继承到编译器生成的 IEnumerable<T>执行。

这种失败的一个简单例子是:

static void Main(string[] args)
{
    var a = SkipMe().ToList();
}

[System.Diagnostics.DebuggerStepThrough]
static IEnumerable<int> SkipMe()
{
    // comment out line below and the throw will be stepped over.
    yield return 1;
    throw new Exception();
}

有没有办法让 C# 编译器添加 DebuggerStepThrough自动生成类型的属性?

有没有办法让 visual studio 使用 [CompilerGenerated] 跳过对任何类型的调试?属性?

--

附录:一些说明性的截图

F5 后的结果

screen 1

screen 2

Visual Studio 版本:

snip 3

我们缺少的属性:

the missing attribute

最佳答案

我不认为有一种方法可以实现您正在寻找的效果。

  • 无法让 C# 编译器将此属性复制到生成状态机方法中。
  • 您无法通过将 DebuggerStepThrough 添加到包含迭代器方法的类来解决这个问题。调试器只查看直接父类型,而不查看包含嵌套类型的类型。

我能想到的实现此目的的唯一真正方法是将所有您不想调试的代码放入单独的 DLL 中。然后不要为那个特定的 DLL 加载 PDB。

关于c# - DebuggerStepThrough 是否可以继承到自动生成的 IEnumerable 实现中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751814/

相关文章:

c# - PBKDF2 在 .NET 中使用 SHA 256

visual-studio - 将权限提升到 Visual Studio 以获取构建后事件批处理脚本

c# - 如何将文本包装在 TextBlock 中?

debugging - 如何调试 Ansible 问题?

c# - 使用条件 (? :) operator for method selection in C# (3. 0)?

c# - 如何显示超过 63 个字符的系统托盘工具提示?

c# - 匹配字符串(段落)中的大型短语字典中的项目的有效方法是什么

c++ - 如何在调试中使用 Visual Studio 正确编译 WebRTC?

java - 为什么 Java 不告诉你哪个指针是空的?

javascript - 使用 Meteor JS 时如何通过按钮更改 URL 路径