Linux调试器

目录

gdp调试器

调试相关指令

l 行号

l函数名

s

break 行号

break 函数名

info break

finish

continue

until 行号

disable breakpoints

enable breakpoints

delete breakpoints

delete breakpoints n

display 变量名

undisplay 序号

p变量

quit


前面两期我们已经学写了vim编辑器和gcc编译器,这两个工具完成了对代码的编写和编译,今天我们要学习的就是gdb工具,它完成的是对代码的调试,调试在我们日常的编码中也是十分重要的,所以学好调试,是每一个程序猿的必修课。

gdp调试器

在使用gcc编译器编译完了代码之后,我们就要使用gdb调试器进行代码的调试,gdb的调试和vs中的调试有许多的相似之处。那么在linux中,我们如何使用gdb调试器进行调试呢?我们可以直接给gcc编译之后的代码进行调试吗?我们通过代码验证一下: 

上述代码为调试一个可执行程序的代码。 

我们发现,系统给了我们提示,说mytest这个可执行程序没有debug信息,所以我们直接给出结论,一个可执行程序要可以被调试,就必须含有debug信息。那么如果给可执行程序添加debug信息呢?代码如下:

我们通过如图2处的代码为mytest加上debug信息,通过1,3不难发现,添加玩debug信息之后,可执行程序前后的内存大小有了变化,加上debug信息之后可执行程序内存变大了一些。

调试相关指令

l 行号

l 行号:如果给定了行号,就从给定行号位置开始往下展开源代码,一次展开10行。

l函数名

l函数名:列出当前函数的源代码。 

r:运行可执行程序。 

n:单条执行,不进入函数调用,类似与vs中的F10。

s

s:进入函数调用。类似与vs中的F11。

break 行号

break 行号:为当前行设置断点。

break 函数名

break 函数名:为当前函数设置断点。

info break

info break:查看断点信息。

finish

finish:与s对应,调试完当前函数之后,直接停止调试。

continue

continue:调试完当前函数之后,继续进行调试,知道遇到下一个断点,停止调试,如果之后没有断点,则调试至程序结束。

until 行号

until 行号:比如说我们知道了某一个函数的几部分代码是不可能产生问题的,假如这个函数里面是个循环,如果一步步的进行调试最终结束调试,非常消耗时间,所以可以直接使用until直接跳转到指定行,从指定行开始进行调试。

disable breakpoints

disable breakpoints:禁用断点,只是不想让断点起作用,不想删除断点。

enable breakpoints

enable breakpoints:启用断点 。

delete breakpoints

delete breakpoints:删除所有断点。

delete breakpoints n

delete breakpoints n:删除序号为n的断点。

注意:这里删除的也是断点前的序号,而不是断点所处的行号。 

display 变量名

display 变量名:跟踪查看某一个变量的值,每一次停止调试都查看这个变量。

undisplay 序号

undisplay 序号:取消对当前变量的跟踪。

取消跟踪前:

取消跟踪代码:

注意:undisplay后跟的是跟踪变量前所显示的1,2,3序号,而不是变量名称,这点需要注意。 

取消跟踪之后:

p变量

p变量:打印变量的值。

quit

quit:退出调试。

以上便是所有gdb调试相关的所有重点指令。

本期内容到此结束^_^ 

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棠~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值