专栏首页C/C++基础VS2012使用条件断点和内存断点

VS2012使用条件断点和内存断点

1.条件断点

条件断点是指在达到设置的条件时才触发的断点。

这在调试复杂问题时非常有用,比如循环程序。例如下面的代码片段:

int a=0;
for(int i=0;i<1000;++i){
    //... some code
    ++a;
    //... some code
}

如果对a打下断点,那么每次循环的时候都会触发一次断点。此时我们可以为断点设置触发它的条件,使它满足指定条件时才触发。

以VS2012为例,可以通过在源代码窗口或者断点窗口找到该断点后,右击选择条件,操作如下图:

选择条件后会弹出设置条件的窗口,如下图所示。比如我们输入i==500的时候触发断点。那么当i==500的时候断点才会触发,其它情况下断点不会被触发。

2.内存断点

根据内存地址设置的断点叫做内存断点,Visual Studio中也叫作数据断点。内存断点只有在指定的地址处的变量被修改时,才会触发,访问指定的地址内容是不会触发内存断点的。

应用场景:在很多情况要,一个变量使用的地方过多,我们不知道这个变量在何时何处被修改。使用内存断点就可以轻松搞定。

具体用法: 在程序中断的情况下,一次选择【调试】->【新建断点】->【新建数据断点(D)…】,会弹出如下对话框:

其中字节计数表示变量的类型大小,比如,int占用4个字节。

示例代码:

int test=0;

int main(){
    test=1;
}

设置了上面的内存断点之后,当test被改变的时候就会触发断点,将程序中断在修改内存断点指定的内存地址的语句的下一条语句处,在VS2012中是这样的。


参考代码

[1]VS2008条件断点. [2]http://blog.csdn.net/joan11_3/article/details/9475725.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • *** glibc detected *** malloc(): memory corruption

    在Linux Server上不好模拟出来:不过若是先malloc,再越界memset,再free此内存块,然后malloc新内存块就会出现类似错误。

    Dabelv
  • 使用 Go Modules

    Go 1.11 和 1.12 包括了初步的 support for modules,这是 Go 的新的依赖管理系统,它使依赖版本信息更加明确和易于管理。这篇博客...

    Dabelv
  • 认识UML类关系——依赖、关联、聚合、组合、泛化

    在学习面向对象设计时,类关系涉及依赖、关联、聚合、组合和泛化这五种关系,耦合度依次递增。关于耦合度,可以简单地理解为当一个类发生变更时,对其他类造成的影响程度,...

    Dabelv
  • Visual Studio 调试系列3 断点

    断点是开发人员的工具箱中最重要的调试技术之一。 若要暂停调试程序执行所需的位置设置断点。 例如,你可能想要查看代码变量的状态或查看调用堆栈的某些断点。

    张传宁老师
  • 待补充 | ​Chrome调试工具常用功能整理

    windows: ctrl + shift + i mac: cmd + opt + i

    咸鱼学Python
  • VisualStudio 断点调试详解

    本文详细告诉大家 VisualStudio 断点调试的功能和使用方法,本文使用的是最新 VisualStudio2019 的功能,也许在你看到这篇博客的时候这个...

    林德熙
  • Android Studio你不知道的调试技巧

    写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluat...

    weishu
  • XCode基本使用及调试技巧

    对于初学iOS开发的同学,了解了Objective-C的基本使用后,最关心的应该是如何把OC程序运行起来。由于Xcode的基本使用比较简单,所以本文着重介绍一些...

    微信终端开发团队
  • 逆向二期/002/OD知识

    在command插件输入:?MessageBoxA 会在后面出现地址,转到就可以了

    yichen
  • GDB调试指南-断点设置

    在介绍之前,我们首先需要了解,为什么需要设置断点。我们在指定位置设置断点之后,程序运行到该位置将会“暂停”,这个时候我们就可以对程序进行更多的操作,比如查看变量...

    编程珠玑

扫码关注云+社区

领取腾讯云代金券