如何在Visual Studio中设置条件断点?

154

在Visual Studio中有没有一种简单的方法设置条件断点?

如果我想要只在变量的值变为某个值时触发断点,我该如何做呢?


11
请注意,Express 版本不具备此功能。 - Alexei Levenkov
1
我正在使用 Express 2015,它具有条件断点的功能。 - mark.monteiro
1
2017年的社区版也具有条件断点。 - PentiumPro200
@AlexeiLevenkov社区2022年已经准备就绪。 - undefined
14个回答

205

像平常一样设置断点。右键单击它。点击条件。


1
在 VS 2015 中,您需要将鼠标悬停在断点上并单击齿轮图标来设置条件。 - mark.monteiro
你的意思是,右键点击,设置条件,然后出现“断点条件失败”的错误,对吗? - Toby Caulk
1
答案还应包括条件语句的语法或信息链接。 条件语句的语法:if (condition) { // code to be executed if condition is true } else { // code to be executed if condition is false }参考链接:https://www.w3schools.com/js/js_if_else.asp - Andrew

57

当你使用Express版本时,你可以尝试这个:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

if语句确保在发布版中不存在断点。


3
这有一个非常出色的性能/节省时间的优势。我在我的程序中迭代了每个可能的int“id”(仅约350万个),这只需要几秒钟。我试图使用条件断点,但由于它不在条件分支中,它会减慢执行速度,以至于几分钟后我只能终止调试会话。使用编译后的断点使其变得瞬间完成。 - Goldfish Sandwich

37

Visual Studio提供了许多条件断点的选项:

要设置它们,您需要执行以下操作:

  1. 设置一个断点。
  2. 右键单击断点,在弹出菜单中选择适合您的选项。

这些选项如下:

  • 您可以设置一个基于代码表达式的条件(从弹出菜单中选择Condition)。例如,您可以指定foo == 8或其他表达式。
  • 您可以使断点在被触发一定次数之后才中断程序(从弹出菜单中选择Hit Count)。这是一个有趣的选项,因为实际上您并不仅限于在特定次数上中断,还有其他几种情况的选项。我会让您去探索这些可能性。
  • 您可以对进程ID、线程ID和计算机名称设置过滤器(从弹出菜单中选择Filter)。

17

只是另一种做法,(或者如果你正在使用express),可以在代码中添加条件:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}

9

写出实际条件可能是棘手的部分,因此我倾向于:

  1. 设置常规断点
  2. 运行代码,直到第一次触发断点。
  3. 使用即时窗口(调试 > 窗口 > 即时)来测试您的表达式
  4. 右键单击断点,单击条件并粘贴您的表达式

使用即时窗口的优势:

  • 它有智能感知功能
  • 当评估表达式时,可以确保表达式中的变量作用域内
  • 可以确保您的表达式返回 true 或 false

以下示例在代码引用名为"Setting"的表时中断:

table.GetTableName().Contains("Setting")

9
  1. 在这一行设置断点
  2. 右键点击红色圆形标志
  3. 选择条件断点
  4. 设置条件

5
您可以像平常一样创建断点,右键单击红色圆点并选择“条件”。

5

关于Visual Studio 6.0

Alt+F9!!!


1
-1) 这在VS 2012中不起作用 2) 这个问题已经有很多其他(更好的)答案了 3) 谁在乎VS 6.0(发布于1998年)? 4) 即使有人关心VS 6,这个问题标记为.Net,直到下一个版本的VS(Visual Studio .Net)才支持。 - Tim M.
8
其他答案在VS 6.0上无效,因此我发布了一个解决方案。 - Vorac

4
  1. 像往常一样设置断点
  2. 右键单击断点并选择条件
  3. 您将看到一个对话框,上面写着“断点条件”
  4. 在字段中放置一个条件,例如“i==5”

只有当i为5时,断点才会被触发。


4
  1. 按照通常的方式设置断点。
  2. 右键单击断点标记。
  3. 点击“条件…”
  4. 编写一个条件,你可以使用变量名。
  5. 选择“为真”或“已更改”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接