49

我正在使用 Visual Studio 2010,并且我知道 C++ 中提供了此功能。

我需要调试一些代码,将变量更改为多个值。当变量获得特定值时,我想在特定情况下调试代码。我知道我可以添加if(var == value),但有什么优雅的方法可以做到吗?

另一个问题,我可以在一般更改变量时设置断点吗?

4

8 回答 8

97

当然可以设置一个条件,比如接收某个值的变量。这称为断点条件。要创建一个,请执行以下操作。

  • 在变量更改的点设置断点
  • 右键单击断点并选择“条件”
  • 输入条件,如“theNewValue == 42”

现在断点只会在您的条件评估为真时触发。

您要求的第二项,即在变量的值因任何原因发生更改时中断,称为数据断点。这些仅适用于 C++ 代码。这不是 C#、VB.NET或任何其他托管语言中的选项。

于 2011-09-20T16:03:39.557 回答
4

只要您使用的是除 Express 之外的 Visual Studio 版本,您就可以在 C# 中使用断点条件来实现这一点。

在 Breakpoint Condition 对话框中,在 Condition 框中输入一个有效的表达式,例如myLocalVariable > 1

...如果您想在表达式的值发生更改时中断,请选择已更改。

要访问Has changed选项,请在Breakpoints窗口中右键单击断点并选择Condition...,然后查看下面的屏幕截图。

已更改断点条件的选项

于 2011-09-20T16:01:35.093 回答
3

使用 F9 添加断点 - 右键单击​​它并选择"Condition..."- 现在您可以添加一个布尔条件,并且只有在该条件评估为真时才会触发断点。

于 2011-09-20T16:02:03.940 回答
3

这取决于断点的范围。如果变量不是本地的或不是静态的,您将无法这样做。

要设置断点的条件,请右键单击它,您应该会看到以下屏幕:

在此处输入图像描述

选择条件...

于 2011-09-20T16:03:36.153 回答
2

您可以使用条件断点。我知道您的问题是针对 VS2010 的,但请注意,从 VS2012 开始,您必须切换到托管兼容模式,才能在 Visual Basic 中使用条件断点。为什么以及如何在这里描述:

在-visual-studio-2013 中切换到托管兼容性模式

于 2015-05-28T09:54:25.127 回答
1

VSCode

在 VisualStudio Code 中,您可以设置条件断点,如下所示:

  1. 单击装订线以创建红点断点

  2. 从左侧工具栏中选择调试(图标:圆圈斜线覆盖错误)

  3. 有四个部分:变量、监视、调用堆栈和断点

  4. 展开断点部分,以便您可以看到断点

  5. 右键单击所需的断点

  6. 选择Edit Breakpoint...

  7. 设置条件并按 <Enter>。 例如:
    myvar == 1234

    'stophere' in myvar

参考:

https://code.visualstudio.com/docs/editor/debugging#_conditional-breakpoints

于 2019-04-10T19:53:41.187 回答
0

你可以做这两件事。

  1. 在 VS 中设置断点。右键单击边距中的红点,然后选择添加条件。在那里你可以说var==value并选择“是真的”。
  2. 您可以使用上面对话框中的“已更改”选项来实现此目的。
于 2011-09-20T16:03:30.197 回答
0

正如其他答案已经指出的那样,条件断点是可能的。正如 JaredPar 解释的那样,您可以设置断点,右键单击它,选择“条件”并输入您的条件。

自 Visual Studio 2019 Preview 2 以来,所谓的“数据断点”可用。在调试模式下,您可以在“Autos”或“Locals”窗口中选择一个变量,然后右键单击“Break Whan Value Changes”,您可以将其存档。

Microsoft DevBlogs 的这篇文章解释得很好:Break When Value Changes: Data Breakpoints for .NET Core in Visual Studio 2019

于 2021-10-08T10:30:15.210 回答