GDB调试器

2025-12-08 15 0

前言

GDB(GNU Debugger)是一个用来调试C/C++程序的功能强大的调试器,是Linux系统开发C/C++最常用的调试器

程序员可以使用GDB来跟踪程序中的错误,从而减少程序员的工作量

VSCode是通过调用GDB调试器来实现C/C++的调试工作的

Windows 系统中,常见的集成开发环境(IDE),如VS、VC等,它们的内部已经嵌套了相应的调试器

GDB的主要功能:

  • 设置断点(断点可以是条件表达式)
  • 使程序在指定的代码行上暂停执行,便于观察
  • 单步执行程序,便于调试
  • 查看程序中变量值的变化
  • 动态改变程序的执行环境
  • 分析崩溃程序产生的core文件

常用调试命令参数

调试开始:执行gdb【exefilename】,进入gdb调试程序,其中exefilename为要调试的可执行文件名

## 以下命令后括号内为命令的简化使用,比如run(r),直接输入命令 r 就代表命令run
help(h) # 查看命令帮助,具体命令查询在gdb中输入help + 命令
run(r) #重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件)
start #但不执行,运行程序,停在第一行执行语句
list(l) # 查看源代码(list-n,从第n行开始查看代码,list + 函数名:查看具体函数)
set # 设置变量的值
next(n)# 单步调试(逐过程,函数直接执行)
step(s)# 单步调试(逐语句,跳入自定义函数内部执行)
backtrace(bt) # 查看函数的调用的栈帧和层级关系
frame(f) # 切换函数的栈帧
info(i) # 查看函数内部局部变量的数值
finish # 结束当前函数,返回到函数调用点
continue(c) # 继续运行
print(p) # 打印值及地址
quit(q) # 退出gdb
break+num(b) # 在第num行设置断点
info breakpoints # 查看当前设置的所有断点
delete breakpoints num(d) # 删除第num个断点
display # 追踪查看具体变量值
undisplay # 取消追踪观察变量
watch # 被设置观察点的变量发生修改时,打印显示
i watch # 显示观察点
enable breakpoints # 启用断点
disable breakppoints # 禁用断点
x # 查看内存x/20xw 显示20个单元,16进制,4字节每单元
run argv【1】 argv【2】 # 调试时命令行传参
set follow-fork-mode child # makefile项目管理:选择跟踪父子进程(fork())

编译程序时需要加上-g,包含调试信息,之后才能使用gdb进行调试:gcc -g main.c -o main
回车键:重复上一命令

相关文章

使用 CloudFlare Worker 搭建 Docker Hub 镜像加速服务
VSCode 系统禁止运行脚本解决方案
安装Docker并配置加速源
GCC 编译器
Linux 开发环境搭建
Linux 系统介绍

发布评论