Visual Studio 设置数据断点以及条件断点

it2022-05-05  178

文章目录

1 示例代码2 数据断点2.1 根据内存地址设置数据断点2.2 根据变量名设置数据断点 3 条件断点

1 示例代码

#include <iostream> using namespace std; class A { public: A(); virtual ~A(); void Add(); private: int m; }; A::A() { m = 0; } A::~A() { } void A::Add() { m++; } int main() { A Test; for (int i=0;i<10;++i) { Test.Add(); } return 0; }

很简单的一个程序,我们通过调用Add方法改变成员变量m的值,所以可以针对于变量m设置数据断点和逻辑断点。

2 数据断点

断点作用:用于检测任意变量,包括类中或者结构体中某个成员变量的值发生了变化,如果此时设置了数据断点,只要该变量的值发生了变化就会触发数据断点,导致程序中断。用于Debug时,查找莫名其妙改变值的变量,用于锁定隐藏bug,以及通过堆栈信息梳理逻辑漏洞。

2.1 根据内存地址设置数据断点

参考1中示例代码,针对成员变量m设置数据断点,只要成员变量的值m发生了变化则触发数据断点。 先在示例代码第36行设置一个普通断点,第36行为:

for (int i=0;i<10;++i)

目的是,先执行代码行:

A Test;

使得对象构造成功。

然后对Test对象的成员变量m添加监视,如下图: 然后对监视对象添加&,获取Test.m在内存中的地址,如下图: 然后点击调试-新建断点-数据断点,如下图 然后将Test.m的内存地址填入进入就OK了,F5运行程序,即可触发数据断点。

2.2 根据变量名设置数据断点

如果不想像上述步骤一样通过添加监视获取变量地址,通过变量地址设置数据断点,可以使用变量名的方式。 直接打开调试-新建断点-数据断点,填入&(变量名),运行即可触发数据断点。

3 条件断点

作用:当变量值满足某种条件时,触发断点。 以Test.m == 5触发断点为例。 依然在示例代码第39行设置一个普通断点,第39行为: 用鼠标在该断点上停留,则会出现如下设置按钮: 点击设置按钮-条件,如下图: 在条件表达式中输入:

Test.m == 5

如下图: 然后调试运行程序,即可触发条件断点

如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com/,更多博文干货等着您。

HW140701 认证博客专家 博客砖家 我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾我是垃圾

最新回复(0)