本篇博客是VisualStudio断点调试系列文章的一部分,示例中使用的代码available to download。
数据断点是当前C++开发者可以用的非常有用的特性。数据断点让你在一快指定的内存发生更改时停止执行。这可以在解决腐败问题方面非常有用的 。下面展示一下这个特性。看看我们的代码,我们注意到PrintObject 的结果是不正确的。它的结果是27,但是我们认为结果一定是32。
调查这个问题,我们设置断点在PrintObject 函数检查加法的值。
当我们检查这个我们看到的pObj1->getMyInt() 的值是5,但是他刚才在外面创建对象的时候是10。什么时候变的?我们可以设置一个数据断点找出他。这样做,首先我们将设置一个断点在对象的构造函数里获取m_myint的地址。
在这个断点上我们能看到值仍然是10。我们也能看到地址。下一步在断点窗口,我们点击New->New Data Breakpoint…
然后在弹出窗里,我们输入这个我们观察到的变量m_myint的地址。我们选择这个字节数是4,因为我们看的是int类型的。
然后你能在Breakpoints window看到这个新的数据断点。
当我继续执行程序,我看倒下面对话窗口。
接着我被带到源代码处以便我看到m_myint 是在哪被修改的。
我希望听到你的关于那些断点经验的反馈。你是怎么使用断点的呢?你喜欢其他的断点的哪些特性呢?请在下面评论告诉我,或者在MSDN forum和User Voice Site上。