linux vim debugger,Vim 调试:termdebug 入门
简介
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 入门相关推荐
- Linux 2:vim,编译与调试,进程
文章目录 一.文件编辑命令 1. vim的介绍与安装 1.1 vim介绍 1.2 vim安装 2. vim的三种模式 3. vim三种模式切换 3.1 模式切换示例图 3.2 命令模式 切换到 插入模 ...
- linux下的vim使用教程!从零基础到入门!
linux下的vim使用教程!从零基础到入门! 文章目录 linux下的vim使用教程!从零基础到入门! vim的介绍! vim的模式介绍! vim三种模式的关系! vim的基本操作! vim的退出! ...
- Linux中vim中gg的英文全拼,计算机科学研究专家陶贤斌带您入门Linux中的vim
原标题:计算机科学研究专家陶贤斌带您入门Linux中的vim Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性.Vim 是 UNIX 文本编 ...
- 如何在Linux上使用VIM进行.Net Core开发
对于在Linux上开发.Net Core的程序员来说, 似乎都缺少一个好的IDE. Windows上有Visual Studio, Mac上有Visual Studio for Mac, 难道Linu ...
- 【Linux】编辑器vim的育婴式教程(勉强够用)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.vim,gcc,makefile的简单使用 总结 前言 这篇文章以"够用"为目的,结合实例简单 ...
- linux下vim编辑器插件,为你介绍Linux系统中vim编辑器的实用插件!
今天小编要跟大家分享的文章是关于Linux系统中vim编辑器的实用插件.Vim 是 Linux 下的常用文本编辑器,但也经常被称为是一个上古神器,因为它对于初学者而言相当不友好,也不好入门. Linu ...
- 一文搞定vim,从安装到入门到精通,助你成功入门vim
一文搞定vim,从安装到入门到精通 NO.1 闲聊 NO.2 安装(不是重点!觉得这部分讲的不清楚可以去找一篇win下安装vim的文章来看,然后跳去NO.3接着看) NO3. 文章核心重点-vim使用 ...
- 基于 Ubuntu 18.04 Jlink + Vim + Cmake + Makefile 调试 STM32
Ubuntu 18.04 Jlink + Vim + Cmake + Makefile 调试 STM32 作者:解琛 时间:2020 年 8 月 3 日 Ubuntu 18.04 Jlink + Vi ...
- Linux下的vim配置和插件管理
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
最新文章
- linux 文件IO与内存映射:内存映射
- pandas写excel报错ModuleNotFoundError: No module named ‘xlwt‘
- HDU 2001 计算两点间的距离
- 【Boost】boost库中智能指针——weak_ptr
- GNU C __attribute__ 机制简介
- 快速幂模板(Python)
- 基于softmax的文本多分类模型代码实现
- 开源操作系统 FreeDOS 二十五年演进史:因微软抛弃 MS-DOS 而来!
- [转]How to Improve Entity Framework Add Performance?
- [FW]修复ubutnu12.04+win7的grub2引导
- linux+shell+解压命令,linux shell解压命令
- PostgreSQL应用(二,客户端工具————CRUD)
- Next主题 - 图片设置
- 关于爬虫学习的一些小小记录(二)——正则表达式匹配
- 联想IBM ThinkPad 笔记本BIOS设置手册
- 大数据培训:Hadoop生态系统圈
- 实验一 网络侦查与网络扫描
- 阿里 java 面试题 p6_「独家」五面阿里P6:Java开发面试题及答案
- redis数据库创建
- PHP留言板 PHP在线咨询留言系统
热门文章
- crontab 执行php脚本,为什么crontab没有执行我的PHP脚本?
- windows下python 使用CRF++ python接口的配置
- python中的@property(get与set作用
- python的序列类型包括哪三类,Python常用的序列类型包括列表、元组和字典三种。...
- 测试服务器性能常用算法,服务器性能剖析(profiling)之——简介
- NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架
- Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
- 论文浅尝 | 利用图 Transformer 实现基于知识图谱的文本生成
- 深度学习中不得不学的Graph Embedding方法
- 【LeetCode】3月26日打卡-Day11