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信息呢?代码如下:
Linux调试器_第1张图片

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

调试相关指令

l 行号

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

Linux调试器_第2张图片

l函数名

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

Linux调试器_第3张图片

r:运行可执行程序。 

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

Linux调试器_第4张图片

s

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

break 行号

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

break 函数名

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

info break

info break:查看断点信息。

finish

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

Linux调试器_第5张图片

continue

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

Linux调试器_第6张图片

until 行号

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

Linux调试器_第7张图片

disable breakpoints

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

Linux调试器_第8张图片

enable breakpoints

enable breakpoints:启用断点 。

Linux调试器_第9张图片

delete breakpoints

delete breakpoints:删除所有断点。

Linux调试器_第10张图片

delete breakpoints n

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

Linux调试器_第11张图片

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

display 变量名

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

Linux调试器_第12张图片

undisplay 序号

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

取消跟踪前:

取消跟踪代码:

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

取消跟踪之后:

p变量

p变量:打印变量的值。

quit

quit:退出调试。

Linux调试器_第13张图片

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

本期内容到此结束^_^ 

你可能感兴趣的:(知识总结,Linux系统编程,linux)