zoukankan      html  css  js  c++  java
  • 使用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的值。

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/winkyao/p/2601828.html
Copyright © 2011-2022 走看看