当前位置:  开发笔记 > 编程语言 > 正文

什么是数据断点?

如何解决《什么是数据断点?》经验,为你挑选了2个好方法。

我刚才知道有数据断点.我使用Visual Studio在C++工作了5年,从未使用过数据断点.

有人可以了解一下数据断点是什么,何时使用它们以及如何在VS中使用它们?

根据我的理解,当我们想要检查变量值的变化时,我们可以设置数据断点.在这种情况下,我们可以使用变量值的条件设置数据断点.

还有其他例子吗?



1> Shog9..:

好醇" 丹尼尔LeCheminant具有坚实的答案在一个数据断点做,所以我会在一些轶事,突出有用的用途折腾:

在那里,你知道任何情况下什么会改变,但很少或不知道哪里的代码改变它的生命(因为否则你可以简单地使用一个条件断点).特别,

"不可能"的情景 -程序崩溃,因为变量XNULL,当变量X不应该是NULL因为没有代码的任何地方曾经把变量XNULL.在初始化的代码中放置一个普通断点X,当它被命中时,设置一个数据断点来监视更改NULL.更常见的情况是内存过早发布,并且仍然存在指向它的指针:使用数据断点来找出释放内存的人.

繁琐的场景 - 第三方库正在为您的数据结构做坏事,讨厌,可怕的事情.你知道它正在发生,因为有人诋毁你的数据,显然你的代码是完美的.但你不知道在哪里或什么时候.当然,您可以单步执行一个兆字节的反汇编DLL ...但是为什么要麻烦,当您可以在数据上设置数据断点时,请坐下来等待它被破坏!

Heisenbugs - 类似于不可能的场景,但是当你仔细观察时它们会消失,因此正常的断点 - 甚至是有条件的断点 - 都是无用的.时序和用户输入敏感逻辑特别容易受到这种情况的影响.由于数据断点不需要调试器实际中断,直到时机成熟,假设您可以提出仅在难以捉摸的bug实际发生时才会更改的内存位置,您可以使用数据断点为其设置陷阱Heisenbug并 flagrante delicto中捕获它.

意大利面场景 - 在旧的,腐烂的代码库中常见,其中全局数据随处可访问.是的,你可以使用普通的'条件断点......但你需要数百个.数据断点使其变得简单.



2> Daniel LeChe..:

定义:

数据断点允许您在存储在指定内存位置的值发生更改时中断执行.

从MSDN:如何:设置数据断点:

如何设置内存更改断点

    从"调试"菜单中,选择"新建断点",然后单击"新建数据断点"

    -要么-

    在"断点"窗口菜单中,单击"新建"下拉列表,然后选择"新建数据断点".

    将出现"新断点"对话框.

    在"地址"框中,输入计算内存地址的内存地址或表达式.例如,&foo在变量foo的内容发生变化时中断.

    在"字节计数"框中,输入希望调试器监视的字节数.例如,如果输入4,则调试器将监视从&foo开始的四个字节,如果这些字节中的任何一个更改值,则会中断.

    单击确定.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有