条件 C# 断点?

Posted

技术标签:

【中文标题】条件 C# 断点?【英文标题】:Conditional C# breakpoint? 【发布时间】: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 语句和一些虚拟代码并以这种方式破坏它?只有这样吗?

【问题讨论】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

迭代次数 > 1000 次,leppie 的答案更好。虽然您必须编辑代码来执行此操作,但它要快得多。 ***.com/a/11290503/282143【参考方案4】:

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

最简单最快方式imo。

The Ultimate Visual Studio Tips and Tricks Blog

【讨论】:

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

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

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

【讨论】:

以上是关于条件 C# 断点?的主要内容,如果未能解决你的问题,请参考以下文章

在x64dbg中设置条件断点

Visual Studio 2010 C# 调试器不会在新断点处停止

Beta 版发布前的 C# 最终测试。异常断点......我们应该测试任何有用的断点吗? [关闭]

实现 ABAP 条件断点的三种方式分享

C# http下载(支持断点续传)

vs2010 C# 当前不会命中断点。还没有为该文档加载任何符号。 求解决