gdb 基本命令

当然,以下是常用 GDB(GNU 调试器) 的基本命令汇总,适用于 C/C++ 程序调试:


🧩 一、启动调试

命令 说明
gdb ./your_program 启动 gdb 并加载可执行文件
gdb ./your_program core 加载 core dump 文件进行分析
gdb --args ./your_program arg1 arg2 带参数启动程序

🧭 二、运行控制命令

命令 说明
runr 运行程序
run <args> 运行时传参
continuec 继续运行程序
nextn 单步执行(不进入函数)
steps 单步执行(会进入函数)
finish 执行完当前函数后停下来
until 跳出当前循环或执行到某行
return 立即返回当前函数(可设返回值)
kill 终止程序

🧱 三、断点管理

命令 说明
break <行号> 在指定行设置断点
break <文件>:<行号> 在某个文件行设断点
break <函数名> 在函数入口设置断点
info breakpoints 查看所有断点
delete <编号> 删除指定断点
disable <编号> 禁用断点(不删除)
enable <编号> 启用断点
clear 清除当前位置的断点

🧐 四、查看程序状态

命令 说明
print <变量名> 打印变量值
p *ptr 打印指针指向的内容
display <变量名> 每次停下都自动打印变量值
info locals 显示当前栈帧的所有局部变量
info args 显示当前函数的参数
backtracebt 打印调用栈
bt full 打印完整调用栈(含变量)
frame <编号> 切换到某个栈帧
listl 显示当前执行位置附近的源码
list <函数名> 查看函数源码

🔍 五、监控与观察

命令 说明
watch <变量> 变量变化时自动停下
rwatch <变量> 读变量时停下
awatch <变量> 读写变量都停下
info watchpoints 查看所有监视点

🔧 六、线程调试

命令 说明
info threads 查看当前所有线程
thread <编号> 切换到某个线程
thread apply all bt 所有线程打印栈信息

🧰 七、其他有用命令

命令 说明
set var <变量>=<值> 修改变量值
info registers 查看寄存器信息
disassemble 反汇编当前函数
quitq 退出 gdb
set pagination off 关闭分页(防止输出暂停)

💡 实用技巧

  • TAB 补全命令,比如 br<TAB> 自动补成 break
  • Ctrl + r 反向搜索历史命令
  • 可以创建 .gdbinit 文件自定义命令

是否需要我根据你的项目场景(如调试死锁、内存问题、多线程等)给你定制一套 GDB 调试技巧?