gdb工具使用简单介绍

在学习gdb调试工具之前,我们要对gcc/g++编译工具进行一些了解

gcc只能编译C语言,g++可以编译C与C++

gcc/g++使用命令

gcc (文件名) -o (要生成的文件名)//此处生成的文件就是可执行文件,并且是release本的

gcc -o (要生成的文件名)(文件名)//这种顺序写法也可以

下面以源文件名字为Gdb.c为例进行演示

 生成可执行文件要经预处理,编译,汇编,链接这一过程

  • 编译过程为 扫描程序-->语法分析-->语义分析-->源代码优化-->代码生成器-->目标代码优化;
  • 扫描程序进行词法分析,从左向右,从上往下扫描源程序字符,识别出各个单词,确定单词类型
  • 语法分析是根据语法规则,将输入的语句构建出分析树,或者语法树,分析树parse tree或者语法树syntax tree
  • 语义分析是根据上下文分析函数返回值类型是否对应这种语义检测,可以理解语法分析就是描述一个句子主宾谓是否符合规则,而语义用于检测句子的意思是否是正确的
  • 目标代码生成指的是,把中间代码变换成为特定机器上的低级语言代码。

gcc -E  Gdb.c -o Gdb.i//到预处理完成停止

gcc -S  Gdb.c -o Gdb.s//到编译完成停止

gcc -c  Gdb.c -o Gdb.o//到汇编完成停止

gdb调试命令

上面说了那么多那么我们要如何对程序进行调试,首先我们要清楚调试只能在debug版本下进行,我们需要把上面的gcc (文件名) -o (要生成的文件名)改为·gcc (文件名) -o (要生成的文件名)-g来生成debug版本的可执行程序

输入命令:gdb 可执行文件名(debug)开始进行调试

退出gdb:输入quit

显示代码:输入list  简写l

 gdb自动记录最近一条命令,需要重复使用时直接回车即可

开始调试 输入:r //此时我们没有打断点,输入会直接运行程序

打断点 输入:b  行号

 

查看断点信息 输入:info b

 删除断点 输入:d 断点编号(上图的num)

打了一堆断点,不想删也不想让它起作用,还能够想用的时候使用

输入:disable/enable 断点编号  禁用/启用断点

逐语句调试:s(和VS的F11一样)//可以自己写一个函数验证一下

逐过程调试 输入:n(和VS的F10一样)

如果我们调到一半想重新调试,可以再次输入r

 

查看某个变量 输入:p 变量名

 

长显示变量 输入:display 变量名

取消长显示变量 输入:输入:undispaly 编号//不加编号取消全部

 

当我们打了很多断点,想要逐断点调试 输入:c

运行到固定行停止,输入:until 行号

 查看当前调用堆栈,输入:bt

在调试过程中修改某个变量的值,输入:set var 变量名=修改的值

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值