程序运行出错时, 添加断点单步调试程序是检查错误所在的基本方法. 但是当程序更加复杂时, 我们往往需要确定某个全局变量或者成员变量是在什么时候被修改的. 这个时候使用普通的位置断点(F9)
进行单步调试往往不能很好的确定到底是哪里出现的问题.
F10, F11, F10, F10, F11, F10… 哎呀卧槽按过了, 又要重新来…
没有什么比这种情况更加令人恼火.
数据断点
数据断点可以让程序在指定的一块内存发生变化时停止运行.
添加数据断点
数据断点只能在调试状态下添加 ( 毕竟你要指定一块内存, 可以看到未运行时无法添加数据断点 )
// 数据断点示例
#include<iostream>
using namespace std;
int gVariable = 10;
int main()
{
cout << "gVariable = " << gVariable << endl;
// 命中数据断点
gVariable = 20;
cout << "gVariable = " << gVariable << endl;
system( "PAUSE" );
return 0;
}
我们首先利用位置断点将程序中断在第6行的输出语句上, 然后在”调试->新建断点->新建数据断点”中新建一个数据断点.
通过监视可以看到运行时程序为gVariable分配的内存地址是0x0032f000
这时我们按两次F10, 第二次将执行赋值语句gVariable = 20; 此时将会命中之前的数据断点.