在Visual Studio中如何在变量写入时设置断点?

15

如何在Visual Studio中设置变量改变时(我认为这是写访问)的断点?


3
可能是重复的问题:Visual Studio调试器+当值更改时中断? - Matt Ball
5个回答

24

这在Visual Studio中被称为数据断点(Data Breakpoint)。要创建一个数据断点,您需要获取所需变量的地址(只需添加&variableName)到监视窗口或立即窗口。然后按照以下步骤进行:

  1. 调试(Debug) -> 新建断点(New Breakpoint) -> 新建数据断点(New Data Breakpoint)
  2. 输入地址和值的字节大小

注意:这仅适用于C++应用程序。托管语言不支持数据断点。


嘿 @JaredPar,这个答案需要更新适用于VS2019。 ;) - Steven Liekens

3
您需要在断点中添加“已更改”条件。操作步骤如下:
  1. 在您想要变量发生更改时中断的行上设置断点。
  2. 右键单击红色圆点图标,选择“条件”。
  3. 输入您的变量名称并选择“已更改”选项。
您可以在此MSDN指南中找到更多信息。

这不会只在指定断点的那一行中出现问题吗,而不是每次写入给定变量时都会出现问题? - sdaau

2
这现在在VS2019中支持.NET Core 3.0或更高版本。请看这里了解更多 如何设置数据断点?

在监视、自动窗口或本地窗口中右键单击您感兴趣的属性,然后在上下文菜单中选择“值更改时中断”即可设置数据断点。所有数据断点都会显示在断点窗口中。它们也由指定属性旁边的标准红色断点圆表示。

始终引用重要链接的最相关部分,以防目标站点无法访问或永久离线。 - Armali

0

如果你右键点击断点,你可以设置条件... 这让你可以指定变量值是否为真或者是否已经改变。
断点条件


这不会只在指定断点的那一行中出现问题吗,而不是每次写入给定变量时都会出现问题? - sdaau

-1

您可以通过以下方式添加条件断点:

  1. 添加普通断点
  2. 右键单击它并选择“条件”
  3. 选择“已更改”

只有当文本框内的条件发生变化时,才会触发断点。

据我所知,文本框内的条件需要用您正在调试的语言编写。例如,在C#中:x >= 5

如果您只是想查看变量的更改,可以将变量本身添加到文本框中,当变量更改时,断点将被触发。

希望对您有所帮助, Christian


这不会只在指定断点的那一行中出现问题吗?而不是每次写入给定变量时都会出现问题? - sdaau

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