zoukankan      html  css  js  c++  java
  • [转] 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观察设置的观察点是否有变化。

  • 相关阅读:
    Java中Runnable和Thread的区别
    git 代理设置
    Android的bitmap和优化
    String、StringBuffer与StringBuilder之间区别
    工作流的一些记录
    UIAutomation调用计算器模拟自动执行
    从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值。
    泛型
    基础加强
    数据库和ado
  • 原文地址:https://www.cnblogs.com/qiangxia/p/4565957.html
Copyright © 2011-2022 走看看