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