使用Visual Studio调试器更改值时中断

问题描述 投票:186回答:13

是否有一种方法可以监视变量,并且仅当该值更改时才使Visual Studio中断?

这将使发现棘手的状态问题变得容易得多。

可以这样做吗?

断点条件仍然需要设置断点,我宁愿设置一个监视,并让Visual Studio在状态更改时设置断点。

visual-studio debugging breakpoints conditional-breakpoint
13个回答
126
投票

在Visual Studio 2005菜单中:

Debug-> New Breakpoint-> New Data Breakpoint

输入:

&myVariable

1
投票

您可以在非托管代码中使用内存监视点。但是不确定这些在托管代码中是否可用。


1
投票

您可能可以巧妙地使用DebugBreak()功能。


1
投票

您可以有选择地重载变量的=运算符,并可以在特定条件下将断点置于重载函数内。


1
投票

2019年更新:


27
投票

您也可以选择在代码中明确地中断:

// Assuming C#
if (condition)
{
    System.Diagnostics.Debugger.Break();
}

从MSDN:

Debugger.Break:如果未附加调试器,则用户为问他们是否要附加一个调试器。如果是,调试器是开始。如果连接了调试器,调试器向用户发出信号断点事件和调试器暂停执行过程好像已经有一个调试器断点了点击。

不过,这只是一个备用。如其他注释所述,在Visual Studio中设置条件断点是更好的选择。


26
投票

真的是旧帖子,但万一有人不知道...

Visual Studio 2015]中,您可以在自动实现的属性的set访问器上放置一个断点,并且在更新属性时调试器将中断

public bool IsUpdated
{
    get;
    set;    //set breakpoint on this line
}

更新

或者; @AbdulRaufMujahid在注释中指出,如果自动实现的属性位于单行上,则可以将光标置于get;set;上,然后单击F9,相应地会放置一个断点。不错!

public bool IsUpdated { get; set; }

13
投票

想象一下,您有一个带有以下声明的名为A的类。


9
投票

将变量更改为属性,然后在set方法中添加断点。示例:


3
投票

如果使用WPF,有一个很棒的工具:WPF Inspector。它将自身附加到WPF应用程序并显示具有所有属性的完整控件树,并且它使您(除其他事项外)可以在任何属性更改时中断。


3
投票

我记得您使用Visual Basic 6.0描述它的方式。在Visual Studio中,到目前为止,我发现的唯一方法是指定breakpoint condition


2
投票

右键单击断点对我来说效果很好(尽管大多数情况下,我将其用于特定变量值的条件断点。即使中断涉及线程名称的表达式也可以使用,如果您试图发现线程问题,这将非常有用)。


2
投票

正如彼得·莫滕森(Peter Mortensen)写道:

© www.soinside.com 2019 - 2024. All rights reserved.