当然,以下是常用 GDB(GNU 调试器) 的基本命令汇总,适用于 C/C++ 程序调试:
🧩 一、启动调试
命令
说明
gdb ./your_program
启动 gdb 并加载可执行文件
gdb ./your_program core
加载 core dump 文件进行分析
gdb --args ./your_program arg1 arg2
带参数启动程序
🧭 二、运行控制命令
命令
说明
run 或 r
运行程序
run
运行时传参
continue 或 c
继续运行程序
next 或 n
单步执行(不进入函数)
step 或 s
单步执行(会进入函数)
finish
执行完当前函数后停下来
until
跳出当前循环或执行到某行
return
立即返回当前函数(可设返回值)
kill
终止程序
🧱 三、断点管理
命令
说明
break <行号>
在指定行设置断点
break <文件>:<行号>
在某个文件行设断点
break <函数名>
在函数入口设置断点
info breakpoints
查看所有断点
delete <编号>
删除指定断点
disable <编号>
禁用断点(不删除)
enable <编号>
启用断点
clear
清除当前位置的断点
🧐 四、查看程序状态
命令
说明
print <变量名>
打印变量值
p *ptr
打印指针指向的内容
display <变量名>
每次停下都自动打印变量值
info locals
显示当前栈帧的所有局部变量
info args
显示当前函数的参数
backtrace 或 bt
打印调用栈
bt full
打印完整调用栈(含变量)
frame <编号>
切换到某个栈帧
list 或 l
显示当前执行位置附近的源码
list <函数名>
查看函数源码
🔍 五、监控与观察
命令
说明
watch <变量>
变量变化时自动停下
rwatch <变量>
读变量时停下
awatch <变量>
读写变量都停下
info watchpoints
查看所有监视点
🔧 六、线程调试
命令
说明
info threads
查看当前所有线程
thread <编号>
切换到某个线程
thread apply all bt
所有线程打印栈信息
🧰 七、其他有用命令
命令
说明
set var <变量>=<值>
修改变量值
info registers
查看寄存器信息
disassemble
反汇编当前函数
quit 或 q
退出 gdb
set pagination off
关闭分页(防止输出暂停)
💡 实用技巧
用 TAB 补全命令,比如 br
用 Ctrl + r 反向搜索历史命令
可以创建 .gdbinit 文件自定义命令
是否需要我根据你的项目场景(如调试死锁、内存问题、多线程等)给你定制一套 GDB 调试技巧?