我正在使用 Visual Studio 2010,并且我知道 C++ 中提供了此功能。
我需要调试一些代码,将变量更改为多个值。当变量获得特定值时,我想在特定情况下调试代码。我知道我可以添加if(var == value)
,但有什么优雅的方法可以做到吗?
另一个问题,我可以在一般更改变量时设置断点吗?
我正在使用 Visual Studio 2010,并且我知道 C++ 中提供了此功能。
我需要调试一些代码,将变量更改为多个值。当变量获得特定值时,我想在特定情况下调试代码。我知道我可以添加if(var == value)
,但有什么优雅的方法可以做到吗?
另一个问题,我可以在一般更改变量时设置断点吗?
当然可以设置一个条件,比如接收某个值的变量。这称为断点条件。要创建一个,请执行以下操作。
现在断点只会在您的条件评估为真时触发。
您要求的第二项,即在变量的值因任何原因发生更改时中断,称为数据断点。这些仅适用于 C++ 代码。这不是 C#、VB.NET或任何其他托管语言中的选项。
只要您使用的是除 Express 之外的 Visual Studio 版本,您就可以在 C# 中使用断点条件来实现这一点。
在 Breakpoint Condition 对话框中,在 Condition 框中输入一个有效的表达式,例如myLocalVariable > 1
和
...如果您想在表达式的值发生更改时中断,请选择已更改。
要访问Has changed选项,请在Breakpoints窗口中右键单击断点并选择Condition...,然后查看下面的屏幕截图。
使用 F9 添加断点 - 右键单击它并选择"Condition..."
- 现在您可以添加一个布尔条件,并且只有在该条件评估为真时才会触发断点。
这取决于断点的范围。如果变量不是本地的或不是静态的,您将无法这样做。
要设置断点的条件,请右键单击它,您应该会看到以下屏幕:
选择条件...
您可以使用条件断点。我知道您的问题是针对 VS2010 的,但请注意,从 VS2012 开始,您必须切换到托管兼容模式,才能在 Visual Basic 中使用条件断点。为什么以及如何在这里描述:
在 VisualStudio Code 中,您可以设置条件断点,如下所示:
单击装订线以创建红点断点
从左侧工具栏中选择调试(图标:圆圈斜线覆盖错误)
有四个部分:变量、监视、调用堆栈和断点
展开断点部分,以便您可以看到断点
右键单击所需的断点
选择Edit Breakpoint...
设置条件并按 <Enter>。 例如:
myvar == 1234
或
'stophere' in myvar
等
参考:
https://code.visualstudio.com/docs/editor/debugging#_conditional-breakpoints
你可以做这两件事。
var==value
并选择“是真的”。正如其他答案已经指出的那样,条件断点是可能的。正如 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