简介

termdebug 是从 Vim 8.1 开始内置的调试插件,仅支持 GDB。

本教程仅在 Linux 下(Ubuntu 16.04)测试通过。

安装

将 Vim 升级至 8.1 或以上版本。

GDB 需升级至 7.12 或以上版本。

启动

默认情况下需手动加载 termdebug 插件:

:packadd termdebug

假设我们有一个简单的 helloworld.cpp 文件:

#include

using namespace std;

int main() {

cout << "hello world" << endl;

int in;

cin >> in;

cout << "you input " << in << endl;

return 0;

}

我们将其编译为二进制文件 helloworld:

g++ -g helloworld.cpp -o helloworld

现在,我们在 Vim 中启动 termdebug 来调试这个程序:

:Termdebug helloworld

这时 termdebug 会为我们开三个窗口。

其中, GDB 窗口提供 GDB 原生操作;程序窗口供被调试程序使用,提供 IO 功能;源码窗口提供源码交互。

在 GUI 版本的 Vim (如 gvim)中,源码窗口还提供交互按钮:

我们可以通过 按键切换不同窗口。

调试程序

我们既可以在 GDB 窗口中调试,也可以在源码窗口中调试。

GDB 调试常用指令:

- file bin 加载名为 bin 的二进制文件

- CTRL-C 中断程序

- run/r 运行

- next/n 执行当前行,停在下一行 (step over)

- step/s 执行当前行,进入下一层函数 (step in)

- finish 执行直至离开当前函数

- where 显示栈

- continue/c 继续执行

- break/b N 在第 N 行加断点

- break/b f 在函数 f 处加断点

- delete 删除所有断点

更多 GDB 使用方法请参考官方文档: https://sourceware.org/gdb/current/onlinedocs/gdb/

在源码窗口中的调试指令:

:Run [args] 运行程序,可带参数 [args],或沿用上一次运行的参数

:Arguments {args} 设置下一次运行所用参数

:Break 在当前行加断点

:Clear 删除当前行的一个断点

:Step = gdb "step"

:Over = gdb "next"

:Finish = gdb "finish"

:Continue = gdb "continue"

:Stop 中断程序

如果觉得手动输入调试指令太麻烦,可以在个人的 .vimrc 文件中自定义 keymap 来执行这些命令,如用 来添加断点:

nnoremap :Break

现在我们来演示一下调试上面的已经加载好的 helloworld 程序:

先移动至 GDB 窗口,输入 b main 以在 main 函数入口处添加断点;

在 GDB 窗口输入 r,程序开始运行,并停在 main 函数入口;

在 GDB 窗口输入 n,程序停在 cout << "hello world" << endl; 这一行;

移动至源码窗口,输入 :Continue,程序继续运行,并在 cin >> in 处等待用户输入;

移动至程序窗口(IO窗口),输入数字 3 并回车,可以看到程序输出 you input 3,并运行直至结束;

移动至 GDB 窗口,输入 q,退出调试。

获取帮助文档

在 Vim 窗口中输入 :h terminal-debug 阅读详细的帮助文档。

linux vim debugger,Vim 调试:termdebug 入门相关推荐

  1. Linux 2:vim,编译与调试,进程

    文章目录 一.文件编辑命令 1. vim的介绍与安装 1.1 vim介绍 1.2 vim安装 2. vim的三种模式 3. vim三种模式切换 3.1 模式切换示例图 3.2 命令模式 切换到 插入模 ...

  2. linux下的vim使用教程!从零基础到入门!

    linux下的vim使用教程!从零基础到入门! 文章目录 linux下的vim使用教程!从零基础到入门! vim的介绍! vim的模式介绍! vim三种模式的关系! vim的基本操作! vim的退出! ...

  3. Linux中vim中gg的英文全拼,计算机科学研究专家陶贤斌带您入门Linux中的vim

    原标题:计算机科学研究专家陶贤斌带您入门Linux中的vim Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性.Vim 是 UNIX 文本编 ...

  4. 如何在Linux上使用VIM进行.Net Core开发

    对于在Linux上开发.Net Core的程序员来说, 似乎都缺少一个好的IDE. Windows上有Visual Studio, Mac上有Visual Studio for Mac, 难道Linu ...

  5. 【Linux】编辑器vim的育婴式教程(勉强够用)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.vim,gcc,makefile的简单使用 总结 前言 这篇文章以"够用"为目的,结合实例简单 ...

  6. linux下vim编辑器插件,为你介绍Linux系统中vim编辑器的实用插件!

    今天小编要跟大家分享的文章是关于Linux系统中vim编辑器的实用插件.Vim 是 Linux 下的常用文本编辑器,但也经常被称为是一个上古神器,因为它对于初学者而言相当不友好,也不好入门. Linu ...

  7. 一文搞定vim,从安装到入门到精通,助你成功入门vim

    一文搞定vim,从安装到入门到精通 NO.1 闲聊 NO.2 安装(不是重点!觉得这部分讲的不清楚可以去找一篇win下安装vim的文章来看,然后跳去NO.3接着看) NO3. 文章核心重点-vim使用 ...

  8. 基于 Ubuntu 18.04 Jlink + Vim + Cmake + Makefile 调试 STM32

    Ubuntu 18.04 Jlink + Vim + Cmake + Makefile 调试 STM32 作者:解琛 时间:2020 年 8 月 3 日 Ubuntu 18.04 Jlink + Vi ...

  9. Linux下的vim配置和插件管理

    1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...

最新文章

  1. linux 文件IO与内存映射:内存映射
  2. pandas写excel报错ModuleNotFoundError: No module named ‘xlwt‘
  3. HDU 2001 计算两点间的距离
  4. 【Boost】boost库中智能指针——weak_ptr
  5. GNU C __attribute__ 机制简介
  6. 快速幂模板(Python)
  7. 基于softmax的文本多分类模型代码实现
  8. 开源操作系统 FreeDOS 二十五年演进史:因微软抛弃 MS-DOS 而来!
  9. [转]How to Improve Entity Framework Add Performance?
  10. [FW]修复ubutnu12.04+win7的grub2引导
  11. linux+shell+解压命令,linux shell解压命令
  12. PostgreSQL应用(二,客户端工具————CRUD)
  13. Next主题 - 图片设置
  14. 关于爬虫学习的一些小小记录(二)——正则表达式匹配
  15. 联想IBM ThinkPad 笔记本BIOS设置手册
  16. 大数据培训:Hadoop生态系统圈
  17. 实验一 网络侦查与网络扫描
  18. 阿里 java 面试题 p6_「独家」五面阿里P6:Java开发面试题及答案
  19. redis数据库创建
  20. PHP留言板 PHP在线咨询留言系统

热门文章

  1. crontab 执行php脚本,为什么crontab没有执行我的PHP脚本?
  2. windows下python 使用CRF++ python接口的配置
  3. python中的@property(get与set作用
  4. python的序列类型包括哪三类,Python常用的序列类型包括列表、元组和字典三种。...
  5. 测试服务器性能常用算法,服务器性能剖析(profiling)之——简介
  6. NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架
  7. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
  8. 论文浅尝 | 利用图 Transformer 实现基于知识图谱的文本生成
  9. 深度学习中不得不学的Graph Embedding方法
  10. 【LeetCode】3月26日打卡-Day11