GDB(GNU Debugger)是一个强大的命令行调试工具,用于调试C、C++等编程语言的程序。以下是一些常用的GDB调试命令:
一、启动 GDB:打开终端并输入以下命令来启动GDB,并将可执行文件作为参数
gdb ld-new
二、运行程序:在GDB中,使用 run 命令来启动被调试的程序。
(1)新建一个hello.c文件
#include <stdio.h>
int main() {
int num = 42;
char str[] = "Hello, World!";
printf("This is an integer: %d\n", num);
printf("This is a string: %s\n", str);
return 0;
}
(2) 编译成.o文件
gcc -c hello.c
(3) run使用ld-new可执行文件,运行.o文件
在main处打断点
b main
run /home/newuser/projects/hello.o

三、 查看栈帧信息:使用 bt 命令来查看当前的调用栈信息。
bt
![]()
四、单步执行:使用 step 命令来逐行执行程序,包括进入函数内部。
step
s 命令(step):
s是 "step" 的缩写。- 当你输入
s命令时,GDB将逐行执行程序,包括进入调用的函数内部。 - 如果当前行上的函数是一个函数调用,
s将进入该函数,允许你逐行调试函数内部的代码。 s通常用于深入了解程序的内部工作,包括函数内部的执行路径。
五、逐语句执行:使用 next 命令来逐语句执行程序,不会进入函数内部。
next
n 命令(next):
n是 "next" 的缩写。- 当你输入
n命令时,GDB将执行当前行上的函数并直接跳到下一行。 - 如果当前行上的函数是一个调用其他函数的函数,
n将执行整个函数调用,然后在调用返回后停在下一行。 n不会进入被调用的函数内部,它只会执行当前函数的上下文,然后移到下一行。
六、列出断点
info breakpoints
七、继续执行:使用 continue 命令继续执行程序,直到遇到下一个断点或程序结束。
continue
八、查看变量值:使用 print 命令来查看变量的值。
print variable_name
九、 设置条件断点:使用 break 命令的条件选项来设置条件断点,只有当条件为真时才会触发断点。
break if condition
1. 监视变量:watch 命令用于监视变量的值,当变量的值发生变化时,GDB会中断程序执行。
watch variable_name
2. 设置显示格式:使用 set 命令设置变量显示的格式,如显示十六进制、二进制等。
set variable format


















