【问题标题】:Conditional C# breakpoint?条件 C# 断点?
【发布时间】:2012-07-02 16:18:01
【问题描述】:

我正在调试一个 foreach 循环,该循环将迭代超过 1000 次 - 所以我只希望循环内的断点为特定项目中断。

所以...

foreach(Employee employee in employees)
{
//DO SOMETHING
//BREAK HERE WHEN employee.Id == '2342'
//DO SOMETHING ELSE
}

我是否必须在其中编写 If 语句和一些虚拟代码并以这种方式破坏它?只有这样吗?

【问题讨论】:

    标签: c# debugging if-statement foreach breakpoints


    【解决方案1】:
    if (employee.Id == '2342') Debugger.Break();
    

    或者,您可以在 VS 中设置条件断点,但根据我的经验,这非常慢。

    【讨论】:

      【解决方案2】:

      如果您使用的不是 VS 的 express 版本,请右键单击断点并单击设置条件。

      我个人会使用这种方法,因为我认为修改代码以进行调试是不好的做法。

      否则你就不得不按照自己的方式去做。

      【讨论】:

        【解决方案3】:

        只是添加到以前的答案。 使用条件断点。

        您可以像下面这样指定条件

        【讨论】:

        【解决方案4】:

        通过 UI 使用带有条件断点的 VS 调试器。

        最简单最快方式imo。

        The Ultimate Visual Studio Tips and Tricks Blog

        【讨论】:

        • 这是非常主观的。就我个人而言,我每天都在使用它们,并且发现比用一些临时的东西“弄脏”我的代码要快得多。如果我可以避免在生产代码中编写 DEBUG 代码,我会这样做。
        • @leppie 我不知道,如果您的记录超过几百万条,值得考虑 - 谢谢!
        • @Tigran:在一些对性能敏感的代码或大量调用的方法上尝试一下。去煮点咖啡,希望断点已经命中。
        • 可能是它会执行更快,但是,我个人还是会这样做只有如果有不能这样做,或者以某种方式从 UI 中打扰我。因为不喜欢在我的代码中添加调试内容。当我说更快时,我的意思不是调试器执行,而是断点设置。
        【解决方案5】:

        您可以在 Visual Studio 中使用条件断点。

        右键单击断点并选择条件,然后放入您的子句。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-14
          • 2011-05-03
          • 1970-01-01
          • 2016-02-17
          • 2013-06-16
          • 2020-01-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多