数据断点

本篇博客是VisualStudio断点调试系列文章的一部分,示例中使用的代码available to download

数据断点是当前C++开发者可以用的非常有用的特性。数据断点让你在一快指定的内存发生更改时停止执行。这可以在解决腐败问题方面非常有用的 。下面展示一下这个特性。看看我们的代码,我们注意到PrintObject 的结果是不正确的。它的结果是27,但是我们认为结果一定是32。

image

调查这个问题,我们设置断点在PrintObject 函数检查加法的值。

clip_image004

当我们检查这个我们看到的pObj1->getMyInt() 的值是5,但是他刚才在外面创建对象的时候是10。什么时候变的?我们可以设置一个数据断点找出他。这样做,首先我们将设置一个断点在对象的构造函数里获取m_myint的地址。

clip_image005

在这个断点上我们能看到值仍然是10。我们也能看到地址。下一步在断点窗口,我们点击New->New Data Breakpoint…

clip_image006

然后在弹出窗里,我们输入这个我们观察到的变量m_myint的地址。我们选择这个字节数是4,因为我们看的是int类型的。clip_image007

然后你能在Breakpoints window看到这个新的数据断点。

clip_image008

当我继续执行程序,我看倒下面对话窗口。

clip_image009

接着我被带到源代码处以便我看到m_myint 是在哪被修改的。

clip_image010

概要
在过去的这一周里,我发布了断点所有的种类,那些在Visual Studio里使用的有很帮助的断点。

我希望听到你的关于那些断点经验的反馈。你是怎么使用断点的呢?你喜欢其他的断点的哪些特性呢?请在下面评论告诉我,或者在MSDN forumUser Voice Site上。

原文地址:https://www.cnblogs.com/allanxyq/p/3374522.html