场景1:在gdb中误入vi界面(常见原因)
当使用gdb
调试时,若通过layout
命令启用TUI(文本用户界面)或设置EDITOR=vi
,gdb会调用vi风格的界面,退出方法如下:
-
退出gdb的TUI模式
- 按
Ctrl + X, Ctrl + A
组合键(先按Ctrl+X
,松开后按Ctrl+A
) - 或执行命令:
(gdb) tui disable
- 效果:返回gdb标准命令行模式。
- 按
-
完全退出gdb
- 在gdb命令行输入:
(gdb) quit
- 或简写:
(gdb) q
- 若程序正在运行,会提示确认,输入
y
后退出。
- 在gdb命令行输入:
场景2:gdb调用vi作为源码编辑器
若通过(gdb) edit
命令编辑源码时启动了vi,需退出vi编辑器本身:
- 保存文件并退出vi
- 按
Esc
确保进入命令模式 → 输入:wq
→ 按Enter
。
- 按
- 不保存强制退出vi
- 按
Esc
→ 输入:q!
→ 按Enter
。
- 按
- 退出后:自动返回gdb命令行。
关键概念澄清
- vi:文本编辑器,通过命令(如
:q
)退出。 - gdb:调试工具,通过
quit
命令退出。 - 无“vi的gdb模式”:两者交互仅发生在gdb调用vi时,vi本身无gdb功能。
预防与配置建议
- 禁用gdb的TUI模式
编辑~/.gdbinit
文件,添加:set tui disable
- 更改gdb的默认编辑器(如改用nano)
echo "set editor nano" >> ~/.gdbinit
操作流程图
gdb TUI界面 → 按 [Ctrl+X] + [Ctrl+A] → 返回gdb命令行 → 输入 `quit` → 退出gdb 或 `tui disable` gdb调用vi → 按 [Esc] → 输入 `:wq` 或 `:q!` → 返回gdb
引用说明
- GNU调试器(gdb)文档:gdb: TUI Commands
- Vi编辑器手册:Vi – Vim documentation
注意:若操作后仍无法退出,可能是终端异常,尝试
Ctrl + Z
挂起进程,再用kill %1
终止(慎用),建议通过正规命令退出以保证数据安全。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7684.html