quit、q或ctrl+d均可退出gdb,其中quit最通用;退出不保存断点与历史,需手动save breakpoints或set history save on;附加模式quit会detach进程,启动模式quit则终止被调进程。

quit、q 或 Ctrl+D 都能退出 GDB 会话
直接输入 quit(或简写 q)是最明确、最通用的方式。按 Ctrl+D 也等效,但部分老旧环境(如某些 CentOS 版本)可能不响应;exit 在多数现代发行版中可用,但不是所有 GDB 编译版本都支持——别依赖它。
退出前没保存断点或命令历史?GDB 不会帮你持久化
GDB 默认不自动保存调试会话状态。你设的断点、display 变量、自定义命令等,退出后全部丢失。如果需要复用,得手动导出:
- 用
save breakpoints filename保存断点到文件 - 用
set history save on开启命令历史自动保存(默认关) - 历史文件路径由
set history filename控制,默认是~/.gdb_history
正在调试运行中的进程,quit 后进程会怎样?
这取决于你如何启动 GDB:
- 如果是
gdb -p 1234附加模式:执行quit时 GDB 默认会 detach 进程(即断开调试连接),进程继续运行 - 如果是
gdb ./a.out启动后run起来的:quit会终止整个调试会话,同时默认杀死被调试进程 - 想避免误杀,可在 quit 前先用
detach手动分离,再quit
quit 带参数会影响退出状态码
quit 42 会让 GDB 进程以退出码 42 结束,这对脚本调用有意义;但普通交互调试完全没必要加参数。漏掉参数或输错表达式(比如 quit abc)会导致报错 Invalid character 'a' in expression,然后卡在 GDB 提示符下——此时再输一次 quit 就行。











