📜  GDB(分步介绍)(1)

📅  最后修改于: 2023-12-03 15:15:14.046000             🧑  作者: Mango

GDB(分步介绍)

GDB是一种可用于调试程序的功能强大的工具。它可以帮助程序员检查有关程序中发生了什么事情的详细信息。此外,GDB还可以让程序员执行程序时暂停并检查几乎任何任务的内部状态。

安装GDB

在大多数Linux发行版中GDB通常已经预装了,如果您不确定是否已安装GDB,则可以使用以下命令:

$ gdb --version

此命令将显示GDB的版本信息。如果没有安装,那么您可以使用以下命令安装GDB:

  • Debian/Ubuntu系统:
$ sudo apt-get install gdb
  • Fedora系统:
$ sudo dnf install gdb
基本使用

要使用GDB调试程序,请在命令行中输入以下命令(其中program是要调试的可执行文件的名称):

$ gdb program

这将启动GDB并加载程序。一旦GDB开始运行程序,您可以使用以下命令来控制调试进程:

  • breakb: 添加断点
  • runr: 运行程序
  • continuec: 继续执行程序
  • nextn: 执行下一条语句(无法进入当前函数内部)
  • steps: 执行下一条语句(可以进入当前函数内部)
  • printp: 打印变量的值
  • backtracebt: 打印调用堆栈
  • quitq: 退出GDB

以下是一个使用GDB调试C程序的简单示例:

#include <stdio.h>

int main() {
    int num1, num2;

    printf("Enter two numbers: ");
    scanf("%d %d", &num1, &num2);

    printf("The sum of %d and %d is %d\n", num1, num2, num1 + num2);

    return 0;
}

在Linux终端输入以下命令将程序编译为可执行文件:

$ gcc -g -o sum sum.c

然后输入以下命令以使用GDB调试程序:

$ gdb sum

将会在调试器中进入调试模式。您可以使用以下命令设置断点:

(gdb) break main

这将在main函数的开头添加一个断点。接下来,运行程序:

(gdb) run

程序现在已经暂停在main函数的第一行。使用以下命令之一继续运行程序:

(gdb) continue  # 或者 c
(gdb) next      # 或者 n
(gdb) step      # 或者 s

在程序运行时,可以使用print命令打印变量的值:

(gdb) print num1

输出结果:

$1 = 10

使用以下命令打印调用堆栈:

(gdb) backtrace

输出结果:

#0  main () at sum.c:5

最后,使用以下命令退出GDB调试器:

(gdb) quit
总结

GDB是一个功能强大的调试器,它可以帮助程序员检查什么在程序中发生。分步介绍仅用于介绍基本使用。有关更高级的概念和用法,请参阅GDB文档。