如何在Ubuntu 20.04中使用GDB调试程序如何在Ubuntu 20.04中使用GDB调试程序如何在Ubuntu 20.04中使用GDB调试程序如何在Ubuntu 20.04中使用GDB调试程序
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在Ubuntu 20.04中使用GDB调试程序

GNU 调试器 (GDB) 是 GNU 系统的开源调试器。该调试器是可移植的,可用于 C/C++ 和 Fortran 等多种语言。它可用于通过观察特定断点上的状态来调试程序,甚至更改流程或值以进一步执行。通常,GDB 在命令行中运行,但也为其开发了几个 GUI。

在本文中,我们将探讨如何在 Ubuntu 20.04 LTS (Focal Fossa) 中使用 GDB 调试 C 程序。

先决条件

  • Ubuntu 20.04系统
  • 具有重命名多个文件的 sudo 权限的用户。

注意:本文中讨论的命令已在 Ubuntu 20.04 LTS(Focal Fossa) 上进行了测试。

安装软件包

安装编译和调试所需的 GN 包。在终端中运行以下命令:

sudo apt install gcc gdb -y

用于调试的 C 程序示例

代码

在运行之前,需要编译程序。我们将在文件 main.c 中编译以下 C 代码。

#include <stdio.h>

int main() {

for (int i=0; i<5; ++i) {
printf("Iterator: %d\n", i);
}
return 0;
}

使用GCC编译C程序

通常,使用以下命令在 GCC 中编译 C 代码:

gcc main.c -o bin

需要提供另一个参数以在二进制文件中包含符号。 GDB 使用这些符号来跟踪和调试程序。在终端中运行以下命令来编译 C 代码:

gcc -g main.c -o bin

将出现一个名为 bin 的可执行文件。

执行测试程序

名为 bin 的二进制文件可以像命令行界面上的任何其他可执行文件一样执行。使用以下命令在终端中运行它:

./bin

将出现代码的输出。

在 Linux 上调试应用程序

启动调试器

在终端中使用以下命令运行 GDB 实用程序:

gdb bin

按回车键。将会出现 GDB 终端的控制台。在此控制台中输入run命令以运行作为参数提供给实用程序的可执行文件。

(gdb) run

调试断点

添加断点

可以通过多种方式添加断点。我们将在代码中的 printf 函数上添加一个断点。在终端中运行以下命令添加断点:

(gdb) break printf

或者,也可以使用行号来添加断点。

(gdb) break 6

输入run命令,程序将在断点处停止。

单步执行断点

使用命令继续继续执行程序。

(gdb) continue

还有另外两个命令用于继续执行程序的不同目的:

  • 步骤:逐步执行下一条机器指令。
  • 下一步:执行下一行代码。

也可以使用命令的缩写。 继续命令的缩写是c。

(gdb) c

有关断点的信息

可以使用gdb的info命令观察断点信息。在终端运行以下命令:

(gdb) info breakpoints

将出现有关断点的信息。

注意:断点左边的数字用于其他命令引用它。

删除断点

可以使用delete命令并参考info实用程序的输出中观察到的断点编号来删除断点。

(gdb) delete 1

现在断点已经被删除,如果运行的话,程序会直接执行到最后。

观察变量

可以使用 watch 实用程序来监视变量。首先,我们需要输入变量存在的范围。为此,首先使用以下命令添加断点:

(gdb) break 6

然后运行遇到该断点的代码。

(gdb) r

现在我们处于变量i存在的循环中。

watch 命令将用于观察循环中变量i 的先前值和新值。

(gdb) watch i

现在由 watch 命令生成的断点也将出现在断点列表中。可以使用以下命令显示断点列表:

(gdb) info breakpoints

而且,我们不需要之前插入的断点。可以使用以下命令轻松删除它:

(gdb) delete 1

现在,如果继续,只要变量更改了值,代码就会查看值并显示旧值和新值。

(gdb) c

使用相同的命令也可以观察程序的进一步迭代。

退出调试器

在终端中运行以下命令退出调试器。

(gdb) quit

将出现此关闭gdb实用程序和默认命令行提示符。

结论

在本文中,我们探讨了如何在 GDB 中运行和中断程序。此外,它还被配置为在变量值发生更改时自行中断。我们希望您看完本文后能够轻松地在 GDB 中调试您的程序。

©2015-2025 艾丽卡 support@alaica.com