使用VC数据断点让你避免很多烦忧(转)

(转自http://hi.baidu.com/dbfr2011818/item/8c947f2f353c00d60f37f907)

 在一个大的项目里面,我经常都会感到良好编程风格的作用。有的时候一些Struct或者Public的Class的数据成员总是让我们感到困惑,因为我们有时候是很难监控到它们是什么时候被改变的,当代码很多很乱的时候,靠“人肉搜索”基本上是无法真正找到改变的代码的,有的时候莫名其妙的就被改掉了,这种行为和可能性都很容易出现的。如果有一组Get和Set的话,可以在这个函数里面设置一个断点就可以知道是什么时候被改变的了。

       这种时候大家可以尝试使用数据断点来处理。下面是使用数据断点的简易教程。

      首先我们创建一个简单的控制台空工程,加个源文件复制这些代码。

#include <string>
#include <fstream>
#include <iostream>

using namespace std;

class Test
{
public:
Test():TestData(100)
{
}
public:
int TestData;
};

void TestFunc1( Test& t1 )
{
t1.TestData = 101;
}

void TestFunc2( Test& t2 )
{
t2.TestData = 102;
}


int main(int argc, char *argv[])
{
Test tt;

TestFunc1(tt);

TestFunc2(tt);

return 0;
}
        现在我们要监控tt的TestData是什么时候被改变的。

1.因为数据断点总是要在某个断点触发的时候才能激活,因此我们先在TestFunc1的前面加上一个断点。

      2.F5调试,直到触发这个断点。然后在断点窗口中新建数据断点。


         3.这个时候我们可以把&tt.TestData设置进去,这将会取到它的地址。

       确定


           再按F5继续



     另外,还可以看到调用堆栈.


    

         PS,监视窗口里面的$err,hr可以监控到GetLastError的值。

原文地址:https://www.cnblogs.com/winkyao/p/2601828.html