Linux下的调试利器--GDB

简介:

       gdb是GUN组织开发的Linux下的调试利器。一般用于调试C/C++程序。

GDB主要有以下4个功能:

        1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

        2、可让被调试的程序在你所指定的调置的断点处停住。

        3、当程序被停住时,可以检查此时你的程序中所发生的事。

        4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

安装gdb:

CentOS 7下可直接输入命令安装:

yum install gdb

使用gdb调试:(以test.c为例)

1.使用gcc -g test.c -o test(或者g++ -g test.cpp -o test调试.cpp程序)命令编译需要调试的C语言程序,得到二进制文件test(也可定义为其他的)

2.执行gdb test进入调试状态

3.执行需要执行的命令:    

  • list:

                list [num]         显示 以第num行为中心的10行代码

                      

                list [function]    显示函数名为function的函数的源程序

                      

                list                 显示当前行后面的代码

                lsit  -             显示当前行前面的代码

  • run:

                set args 设置运行参数,set args 1 2 3 

                show args    查看设置好的运行参数

                path <dir>  设置运行路径

                show paths      查看运行路径

                cd <dir>    进入目录

                pwd:显示当前所在的路径

  • break:

                break:在下一条指令处停住

                break <function>     为函数打断点,在进入函数时停止,C++中可以使用class::function或function(type, type)格式来指定函数名。

                  break    <linenum>       在指定行打断点

                  break  +num  /  break   -num   在当前行号的前面或者后面的num行停住。

                  break   filename:linenum   在源文件的指定行停住

                  break   filename:function    在源文件的指定函数入口停住

                  break    *address    在程序运行的内存地址处停住

      info:   查看断点、寄存器、观察点和信号等信息

    单步:

            step  <num>    执行num步然后停止,如果有函数调用,则进入该函数(前提是才函数被编译时发现错误信息), 

            next   <next>     执行num步然后停止,如果有函数调用,它不会进入函数

            finish    运行程序,直到当前函数完成返回,并打印函数返回时的对战地址和返回值及参数

            until    一直在循环体内单步执行

            continue    程序停止时可以使用它恢复运行,直到程序结束或者到达下一个断点

            print    程序被停住时可以使用它查看当前程序的运行数据

                    print可以设置输出格式:

                                    x 按十六进制格式显示变量。

                                    d 按十进制格式显示变量。

                                    u 按十六进制格式显示无符号整型。

                                    o 按八进制格式显示变量。

                                    t 按二进制格式显示变量。

                                    a 按十六进制格式显示变量。

                                    c 按字符格式显示变量。

                                    f 按浮点数格式显示变量。

                watch    观察某个表达式的值是否变化,如果有变化则马上停止

                examine    查看内存地址中的值

              return    如果在函数中设置了断点,断点后还有语句没有执行完,可以用return强制函数忽略没执行的语句并返回

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值