功能描述:
在vs中添加一个数据断点 设置指定的内存地址和内存长度后 如果代码中有对这段内存的写操作 vs会自动断点到对应的代码中
注意:与普通断点不同的是 添加数据断点需要在启动Debug运行程序后 才可以添加(因为添加时要设置内存地址 只有进程启动了才有确定的内存地址)
我用的最多的场景》
在模块A中定义了变量int a = 1; 没有任意地方在修改a的值
经历了几个世纪的运行后 在模块B中访问变量a 发现值已经不是1了。
问题来了:到底是哪里莫名其妙修改了这个变量的值? (一般情况下都是因为内存越界修改了a所在的内存)
如果添加一个数据断点 设置内存地址为&a 监测内存长度为变量a所占内存字节数 当别处修改a时 就直接命中了
--------------------------------------------------------------------------------------------------------
以下阐述该断点的使用方法:
1、debug调试运行程序 在声明变量“int a = 1”的位置打个断点 停在这里(声明了a后 监控的内存地址就确定了)
2、启动数据断点添加界面:工具栏DEBUG > New Breakpoint > New Data Breakpoint
之后就会停在添加界面 输入对应的起始地址(&a)和监控长度(sizeof(int)) 并点击OK按钮 如下图所示:
之后 如果别处修改这段内存 编译器会直接命中代码 点击键盘的F5或VS的continue按钮(与其他断点一样) 程序就可以继续执行下去了
(以上是我理解的数据断点 有可能有更多的使用方法或场景 大家可以自己再去搜索一下)