📅  最后修改于: 2023-12-03 15:15:14.046000             🧑  作者: Mango
GDB是一种可用于调试程序的功能强大的工具。它可以帮助程序员检查有关程序中发生了什么事情的详细信息。此外,GDB还可以让程序员执行程序时暂停并检查几乎任何任务的内部状态。
在大多数Linux发行版中GDB通常已经预装了,如果您不确定是否已安装GDB,则可以使用以下命令:
$ gdb --version
此命令将显示GDB的版本信息。如果没有安装,那么您可以使用以下命令安装GDB:
$ sudo apt-get install gdb
$ sudo dnf install gdb
要使用GDB调试程序,请在命令行中输入以下命令(其中program
是要调试的可执行文件的名称):
$ gdb program
这将启动GDB并加载程序。一旦GDB开始运行程序,您可以使用以下命令来控制调试进程:
break
或b
: 添加断点run
或r
: 运行程序continue
或c
: 继续执行程序next
或n
: 执行下一条语句(无法进入当前函数内部)step
或s
: 执行下一条语句(可以进入当前函数内部)print
或p
: 打印变量的值backtrace
或bt
: 打印调用堆栈quit
或q
: 退出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文档。