【问题标题】:foreach debugging is too detailedforeach调试太详细了
【发布时间】:2013-12-26 15:32:03
【问题描述】:

首先为标题道歉,在简短的摘要中描述问题有点困难。

在 Visual Studio 2008 中调试 C# 代码时,我注意到在 foreach 循环中按 F10(跳过)会导致调试器仅在 foreach 内的几乎每个关键字处停止。例如:

foreach( int foo in fooList )

如果我的断点设置在这一行,按 F10 后,它会高亮 int foo,然后 F10 再次高亮 fooList,然后 F10 再次高亮 in。最后按 F10 大约 4 次后,它会进入foreach 中的第一行代码。这真的很烦人,我希望按下 F10 将一次性跳过foreach 行(就像在调试 C++ for 循环时所做的那样)。有没有办法在 Visual Studio 中配置它,还是我必须忍受它? :-(

【问题讨论】:

  • 在循环体中设置断点,然后按F5。
  • 顺便说一句,它在生成的调用 MoveNext()Current 时停止。
  • @SLaks 显然我已经想到了第二个断点的想法,但更希望有一个切换来禁用“详细”foreach 检查!

标签: c# debugging visual-studio-2008


【解决方案1】:

在 foreach 中添加断点并使用 F5

【讨论】:

    【解决方案2】:

    您可以在开始和结束大括号中添加断点,这是我通常所做的。

    例如:

    foreach(Item item in collection)
    {    // <- Breakpoint here for the start of each iteration
    
         // Do some work here.
    
    }    // <- Breakpoint here for the end of each iteration
    

    另外,使用 F5 继续执行直到下一个断点。 F10 只会执行一个“指令”。

    【讨论】:

    • 将其标记为答案,因为它非常详细。我喜欢将断点放在左大括号上的想法。谢谢!!
    【解决方案3】:

    以下是 Visual Studio 中的以下快捷键(可根据需要更改默认设置):

    • F11 - Step Into - 在执行到函数调用(Step Into)之后,一次执行一条语句。
    • F10 - Step Over - 执行下一行代码,但不执行任何函数调用(Step Over)。
    • Shift + F11 - Step Out - 执行当前执行点所在的函数的剩余行(Step Out)。
    • F5 - 继续 - 运行应用程序。如果您有任何额外的断点,应用程序自然会在该点停止。因此,如果此断点位于 foreach 循环中,它将在每次执行该循环时停止。

    这是一个包含所有调试器快捷代码的有用链接:Shortcut Codes

    【讨论】:

    • 提问者正在寻找调试选项中的设置来更改调试器在 for 循环中的移动方式,而不是调试器键盘快捷键列表。
    • 提问者不了解调试工具,所以我提供了一个快速列表,以便他们知道按 F5 会对他们做什么以及按 F10 会做什么,他们之前在做什么,实际上是在做什么。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2014-10-05
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多