Linux调试器
目录
前面两期我们已经学写了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?
r:运行可执行程序。?

n?
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调试相关的所有重点指令。
本期内容到此结束^_^?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!