美文网首页读书笔记
GDB学习笔记(1)

GDB学习笔记(1)

作者: Lmmmmbbb | 来源:发表于2016-10-04 18:57 被阅读53次

    最近通过《软件调试的艺术》学习GDB,书刚读了大概三分之一,这里先记一些笔记
    :-)

    缩写

    short full
    b break
    i b info break
    c continue
    r run
    at attach
    s step
    n next
    p print
    bt backtrace

    基本操作

    断点

    b position
    position可以是 filename:line filename:function
    filename可以不指明,gdb总有一个焦点文件,刚启动时焦点文件是main函数所在的文件,当程序运行时,焦点文件是当前执行代码所在的文件,也可以通过 list filename:functionname来设定焦点。

    断点命令:

    command breakPointNumber,对编号为breakPointNumber的断点设置命令,以end结尾,执行到此断点时,命令会执行,比如打印变量:

    printf(“at break point 3,
               i = %d,j = %d,k = %d\n”,
               i,j,k) //括号可有可无
    

    一些命令,感觉用处不大。。。

    • define 定义宏,可带最多十个参数  
      
      define PRINT_AND_GO
      xxxxx(说明)
      >printf   $arg1,$arg0
      >continue
      >end
      
    -    `show user` :   列出所有宏  
    -    `silent` :    不输出信息  
              
    ## 监视点
    wathc `value`  
    watch `expession`  
    `expression`是 **当前程序语言风格** 的条件表达式,比如 (i>0)&&(j==2)  
    当`value`变化或`expression`成立时,程序中断。  
    设置监视点时必须保证监视变量在当前程序指针所在位子有效,即对已局部变量,必须保证程序指针停留在局部变量所在函数,所以一般在要函数入口处加一个断点,然后才能设置函数内变量的监视点。  
    ##条件断点
    - 设置条件断点  
       b  `position`  if  (`expression`)  
       `expression`外的括号可有可无  
    - 将已有断电设置为条件断点  
       condition `breakPointNumber` if (`expression`)  
       `breakPointNUmber`用 info breakpoint(i b)查看  
       
       
    ## 继续执行  
    -    c/continue 继续执行到下个断点  
    -    fin/finsh  继续执行到此函数结束
    -    u/until    继续执行到循环结束 
    *当然,断点对 `fin/u` 依然有效*
    *u 可带位置参数:u `position` * 
    -    s/step     执行下一条语句,会进入函数  
    -    n/next     执行下一条语句,不会进入函数  
    *s/n可带步数参数: s 4*

    相关文章

      网友评论

        本文标题:GDB学习笔记(1)

        本文链接:https://www.haomeiwen.com/subject/orkhyttx.html