在Linux下用gdb命令调试应用程序

gdb 是GNU调试器的缩写形式。调试器是一种用于搜索、查找和获取有关应用程序二进制文件中错误的详细信息的工具。gdb公司 在大多数IDE使用的Linux社区中很流行,编程工具事件发生在Android IDE中。在本教程中,我们将了解如何开始和使用的基本功能 gdb .

null

示例代码

在本教程中,我们将使用以下用C编程语言编写的简单应用程序代码。这段代码只是计算阶乘。

#include  int main(void) {  int fact = 1;  int number=5;  for (int j = 1; j <= number; j++) {    fact = fact * j;    printf("%d",fact);  } }

为Ubuntu、Debian、Mint和Kali安装gdb

我们可以安装 gdb 对于Ubuntu、Debian、Mint和Kali,使用下面的代码行。

$ sudo apt install gdb

为CentOS、RHEL、Fedora安装gdb

安装 gdb 在基于RPM的发行版中,如CentOS、RHEL和Fedora

$ sudo yum install gdb

编译应用程序

我们将从编译示例应用程序开始。我们将使用GCC 或GNU编译器集合,它是Linux环境的实际编译器。 gcc 如果没有安装,可以用下面的线路安装。

$ sudo apt install gcc

现在我们将只提供源代码文件名来编译我们的应用程序 poftut.c 在这种情况下。

$ gcc poftut.c -o poftut

使用调试信息编译应用程序

我们可以调试所有已编译好的应用程序,但有一些有用的选项可用于在调试时提供有关应用程序的更多信息。我们可以启用调试信息,用于将调试代码与源代码匹配,并提供更详细的信息。我们可以用 -g 编译时使用 gcc 就像下面一样。

$ gcc -g poftut.c -o poftut
Compile Application with Debug Info
使用调试信息编译应用程序

通过运行可执行文件进行安装调试

我们可以用不同的方法启动应用程序进行调试,但最基本、最实用的方法是从应用程序名开始。我们要开始了 poftut 应用程序如下。

$ gdb poftut
Start with Executable Name
以可执行文件名开始

我们可以看到 gdb 在加载应用程序和相关调试信息后启动交互式shell。

相关文章: 什么是C程序设计语言

开始调试

我们可以使用 run 命令。但请记住,这将启动进程run,在这种情况下,它将毫无问题地结束。运行时,标准输出将显示在屏幕上。最后一件事是 exit status 在这种情况下这是正常的。

run
Start Debugging
开始调试

检查碰撞

使用案例之一 gbd 正在检查车祸的原因。应用程序可以通过崩溃退出,在这种情况下,崩溃信息是通过 gdb . 我们可以用 backtrace 命令如下。

backtrace
Inspect Crashes
检查碰撞

断点

在大型应用程序中,我们通常需要检查应用程序的流。在考察的时候,我们要看具体情况,这对我们很重要。我们可以设置断点来停止应用程序的执行。我们可以很容易地检查当前的寄存器和内存值。在本例中,我们为该行设置了一个中断 printf .

break printf

我们跑了

run
Breakpoints
断点

列出断点

我们可以用 info break 命令如下。

info break
List Breakpoints
列出断点

列出寄存器值

我们可以列出当前的寄存器值 info registers 命令如下。请记住,寄存器值是非常不稳定的,通常每一步都会发生变化。

info registers
List Register Values
列出寄存器值

踏步

在调试过程中,我们通常希望进一步改变当前内存和寄存器值。我们可以用 step 这个命令。

step
Stepping
踏步

在这种情况下,我们还可以指定步长计数为3。

step 3
step 3
第3步

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享