Linux下的调试工具gdb使用手册(自编)

一、gdb是什么

        在Linux下编写代码时,你是否常常因为查找bug而半夜无法入睡?你是否在程序一晃而过时而一脸发懵?这个时候,你是否常常想想念在某些IDE上可以调试的快乐的日子?哥们哥们,坚持住,Linux也有调试器的!这个调试器就是gdb

二、怎么使用gdb

        1.需要在编译时加上 -g

        因为程序有debug版本和release版本两种,前者具有调试信息,后者是程序优化版本,而Linux下gcc/g++出的版本默认是release版本,所以想要调试,需要在编译时加上 -g

                      gcc -o mytest-debug test.c -g

        2.启动gdb

        启动gdb使用gdb xxx命令,xxx为你编译好的debug版本可执行程序

         3.指令介绍

            (1)l 行数/main ——查看指定行内容

                这个查看会显示出指定行上下加起来的十条指令,方便上下的代码理解指定行,看完后再输入 l ,显示剩下内容,再回车,显示统计的代码行数量。如下:

                          

                 (2) r ——运行程序            c—— 继续运行

                   需要注意的是,r是每次重新运行程序,遇到断点停止,c是停下后继续运行,如下:

       

             (3)b 文件:行数 ——给指定行打入断点   

                      info b ——查看断点信息   

                      d 编号 —— 删除断点  

                     需要注意的是,删除断点时,采用的是断点编号,且当你是多文件编写时,可以指定在某个文件第几行打断点。如下:

          (4)n —— 逐过程              s —— 逐语句

                逐过程以函数为单位,不进入函数,逐语句以语句为单位,会进入函数。如下:

              (5)p 变量 ——查询变量值     

                       display 变量 ——常显示

                       undisplay 编号 ——取消常显示

        一般调试最常用的监视,就在此了。使用如下:

        

               (6)until 行号 ——在函数内运行到指定行

                这个命令不需要如其他IDE上打上断点才能运行到指定行。在gdb里输入行号即可,运行           到指定行,不过此功能在函数内才可以完整实现,在main函数里会一个一个函数跳转。使用           如下:

                                                  

三、指令全称及其他指令

        其实上文许多的指令都是为了快速调试而简写的指令,下面是指令的全称,以及我们平常调试不常用的指令,以供参考使用:

        

list/l 行号 :显示 binFile 源代码,接着上次的位置往下列,每次列 10 行。
  list/l 函数名  :列出某个函数的源代码。
r或run :运行程序。
n 或 next :单条执行。
s或step :进入函数调用
break(b)   行号:在某一行设置断点
break 函数名 :在某个函数开头设置断点
info break :查看断点信息。
fifinish :执行到当前函数返回,然后挺下来等待命令
print(p) :打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量 :打印变量值。
set var :修改变量的值
continue(或c) :从当前位置开始连续而非单步执行程序
run(或r) :从开始连续而非单步执行程序
delete breakpoints :删除所有断点
delete breakpoints n :删除序号为 n 的断点
disable breakpoints :禁用断点
enable breakpoints :启用断点
info(或i) breakpoints :参看当前设置了哪些断点
display 变量名 :跟踪查看一个变量,每次停下来都显示它的值
undisplay 编号 :取消对先前设置的那些变量的跟踪
until 行号 :跳至 X
breaktrace( bt) :查看各级函数调用及参数
info i) locals :查看当前栈帧局部变量的值
quit/ctrl+d :退出 gdb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值