• linux之gdb使用


      gdb是linux下用来调试的一款软件,在这里,我只记录平常经常会用到的知识点,用到什么,就记录什么,在调试环境中去熟悉调试方法和调试工具,这才会加深理解。

      gdb能够做什么?它可以按照你的定义,随心所欲控制你的程序,让程序在你所指定的断点处停住,当停住时,你可以检查你程序中所发生的事情,也可以动态的改变程序的执行环境。前期你需要做的准备工作,只需要在编译时,添加-g选项就可以了。

    b 函数名/行数

    b filename:linenum 

    b info   //查看断点信息

    delete breakpints  //删除断点

    break 命令没有参数时,表示在下一条指令处停住。

    b if i = 3   当i为3时,设置为断点,停住程序。

    info b 查看断点

    r 一直运行,知道遇到断点或者退出

    s 一步一步运行,遇到函数则进入  s <count>:单步执行后面的count条指令,然后停下来

    n 遇到函数则直接执行,不进入。

    c 继续执行程序,直到遇到下一个断点或者程序退出

    finish 运行程序,直到当前函数完成返回,并且打印函数的返回的堆栈地址,返回值以及参数信息。

    u 运行程序,直到退出循环体

    bt    查看函数堆栈

    p i    打印变量i的值

    clipboard

    查看数组的值或者一段连续内存空间的值,你可以使用gdb的@操作符,“@”左边的是第一个内存的地址值,右边是你想要查看内存的长度。

    例如:

     int *array  =(int *)malloc(len * sizeof(int));

    在调试过程中,可以使用 p *array@len来查看相关内容,如果是静态数组,那么p array就是数组的内容,

     

    watch i    ;设置观察变量,一旦变量变化,则停止运行。

    3。在调试过程中,可以执行shell命令,也可以执行make命令,会调用当前目录的Makefile来编译新的程序,因此,在调试时,可以动态修改代码,编译并且调试,而无需退出gdb的调试命令接口。

    .clipboard[1]

    4. 设置运行参数

       set args 10 20 30 40 50   设置运行参数   //argc = 6 argv[0]=程序名称 argv[1]=10 argv[5]=50

        show args

        info program   //查看程序运行状态

     

    其他高级功能,等到以后用到的时候,再去深入体会学习。

  • 相关阅读:
    编译安装centos6.9 php7.0 mysql5.6 nginx1.8
    mysql小细节随笔
    mpdf中文开发使用文档附demo实例
    svn和NetBeans一起使用造成svn老是死锁, database is locked
    Mastering MariaDB 神秘的MariaDB 中文翻译版
    Laravel开发采坑系列问题
    phpspider php爬虫框架
    ajaxFileUpload只能上传一次,和上传同名图片不能上传等bug问题
    bootstrap-treeview 中文开发手册
    phpredis Redis阵列 Redis Arrays
  • 原文地址:https://www.cnblogs.com/cherishui/p/4032459.html
Copyright © 2020-2023  润新知