• [转] GDB 下 watch的使用


    这里大概说下gdb调试程序时,watch的使用。至于原理尚不清楚,以后再做补充,还请见谅。

    watch通常需要和break,run,continue联合使用。

    下面举例说明:

    代码如下:

    1. #include <stdio.h>  
    2.   
    3. int main()  
    4. {  
    5.     int a=0;  
    6.     for(int i=0; i<10; i++)  
    7.         a+=i;  
    8. }  

    调试的时候过程如下:

    (gdb) l
    1    #include <stdio.h>
    2    
    3    int main()
    4    {
    5        int a=0;
    6        for(int i=0; i<10; i++)
    7            a+=i;
    8    }
    (gdb) b 5                    -------在第5行设置断电
    Breakpoint 1 at 0x80483ba: file a.cpp, line 5.
    (gdb) r                       -------执行到断点处停止
    Starting program: /a.o 

    Breakpoint 1, main () at a.cpp:5
    5        int a=0;
    (gdb) watch a               -------观察a的值,当有变化时,停止
    Hardware watchpoint 2: a
    (gdb) c                        -------继续执行,当a的值变化时停止
    Continuing.
    Hardware watchpoint 2: a

    Old value = 0
    New value = 1
    main () at a.cpp:6
    6        for(int i=0; i<10; i++)
    (gdb) 
    Continuing.
    Hardware watchpoint 2: a

    Old value = 1
    New value = 3
    main () at a.cpp:6
    6        for(int i=0; i<10; i++)
    (gdb) 
    Continuing.
    Hardware watchpoint 2: a

    即,在使用watch时步骤如下

    1. 使用break在要观察的变量所在处设置断电;

    2. 使用run执行,直到断点;

    3. 使用watch设置观察点;

    4. 使用continue观察设置的观察点是否有变化。

  • 相关阅读:
    C++——并发编程
    Poco C++——JSON解析
    #转载#我给所有新手程序员的建议
    #笔记# 如何阅读技术类书籍
    笔记:CSS hack的学习与了解…
    【笔记】CSS选择器整理(IE低版本支持性测试)
    呼吸灯效果
    ajax跨域问题-----jsonp
    【转】js里的时间函数集
    grunt与requirejs结合使用
  • 原文地址:https://www.cnblogs.com/qiangxia/p/4565957.html
Copyright © 2020-2023  润新知