Linux调试器

2024-01-10 15:25:03

目录

gdp调试器

调试相关指令

l 行号

l函数名

r?

n?

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?

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调试相关的所有重点指令。

本期内容到此结束^_^?

文章来源:https://blog.csdn.net/qq_55958734/article/details/135496764
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。