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)中,源码窗口还提供交互按钮:

67d5336cdae57d6ed44314b76172db09.png

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

调试程序

我们既可以在 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 阅读详细的帮助文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时空大数据可视化表达分析,看MapGIS七大“超能力”

文章转载自微信公众号中地数码MapGIS&#xff0c;版权归原作者及刊载媒体所有。伴随着人们探索空间的过程&#xff0c;信息的获取范围也从局部地面、全球地表、地球各个圈层扩展到地球内外的整个空间&#xff0c;从原有的二维平面空间基准逐步演变到三维空间基准&#xff0c;进…

深扒ASML 的玩法,对工控企业生态圈的思考

来源&#xff1a;中国传动网自从美国的新一轮技术封锁发生后&#xff0c;普天之下的吃瓜群众为华为操碎了心&#xff0c;甚至卖菜的大妈偶尔讨论这件事。由此可见&#xff0c;半导体对国家科技、工业的影响有多大。半导体制造产业中&#xff0c;光刻机是核心设备&#xff0c;对…

2019-2020年人工智能产业发展深度报告

来源&#xff1a;华泰证券人工智能市场格局人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是利用机器学习和数据分析方法赋予机器模拟、延 申和拓展类人的智能的能力&#xff0c;本质上是对人类思维过程的模拟。AI 概念最早始于 1956 年 的达特茅斯会…

c语言求字符串复制函数,快速上手系列-C语言之字符串处理函数(一)

C语言中常用的字符串操作函数&#xff0c;有比如计算字符串长度、字符串拷贝&#xff0c;字符串比较等这样的整体操作函数&#xff0c;有字符串查询函数&#xff0c;也有字符串转换函数等等&#xff0c;这里先介绍字符串整体操作函数。字符串整体操作函数实际编程中&#xff0c…

宇宙的第一推动力,必然存在吗?

《创造世界与逐出乐园》&#xff08;The Creation of the World and the Expulsion from Paradise&#xff09;&#xff0c;乔万尼迪保罗&#xff08;Giovanni di Paolo&#xff09;&#xff0c;1445年&#xff0c;© 公共领域文/StillJustJames译/苦山校对/光明左使原文/m…

良好编程习惯的养成

在开发中&#xff0c;一个良好的编程习惯对这个团队也是一种带动作用&#xff0c;今天在网上看到了一坨这样的代码和屎&#xff0c;他恶心了&#xff01;再次强调 一定要注意代码的缩进和格式化&#xff01;&#xff01;切记&#xff01;切记&#xff01;&#xff01; 一定 不可…

科技部:学术不端零容忍!违规人员所获职称、奖金等全部清退归零

文章 | 募格学术来源 | 科技部、科奖中心、新京报国务院新闻办公室2020年5月19日下午举行新闻发布会&#xff0c;介绍加快建设创新型国家、支撑引领高质量发展有关情况。科技界的学风和作风一直都是各方高度关注的问题&#xff0c;科技部是如何加强科技界的作风和学风建设的&am…

一文看懂台积电的研发实力

来源&#xff1a;内容来自「台积电财报」&#xff0c;谢谢。在一个月的文章《这才是台积电的真正实力》中&#xff0c;我们对台积电公司的实力做了一个概述。今天&#xff0c;我们从台积电去年底的研发投入和成果&#xff0c;看清这家晶圆代工巨头的真正技术实力。研发团队之组…

VS2015 IIS Express 无法启动 解决办法(转)

因为安装各种乱七八糟的软件&#xff0c;然后不小心把IIS Express卸载掉了&#xff0c;网上下载了一个IIS Express 7&#xff0c;安装之后本地使用VS 2015无法启动调试&#xff0c;F5 无法启动IIS&#xff0c; 再次F5调试&#xff0c;没有反应IIS Express没有启动。 日志记录错…

【数字孪生】数字孪生十问:分析与思考

本文来源&#xff1a;数字孪生DigitalTwin(北京航空航天大学&#xff0c;自动化科学与电气工程学院&#xff0c;数字孪生研究组)摘 要&#xff1a;当前数字孪生备受学术界、工业界、金融界以及政府部门关注。然而各界对数字孪生存在不同的理解和认识&#xff0c;对数字孪生相关…

图解机器学习

来源&#xff1a;大数据实验室机器学习这个主题已经很普遍了&#xff0c;每个人都在谈论它&#xff0c;但很少有人能够透彻地了解它。当前网络上的一些机器学习文章晦涩难懂&#xff0c;理论性太强&#xff0c;或者通篇云里雾里地介绍人工智能、数据科学的魔力以及未来的工作等…

c语言 复制文件并重命名文件,VS2010 重命名文件:源文件名和目标文件名相同 的解决方案...

想要在“”解决方案资源管理器“”中修改一个已经写好的文件的文件名&#xff0c;如图&#xff1a;在改了几次后就出现了如图的问题&#xff1a;然而在“解决方案资源管理器”中并没有看到&#xff0c;于是我打开了工程在磁盘中的位置文件夹&#xff1a;意外发现了真的存在了一…

Space X和NASA到底有什么关系?

来源&#xff1a;大柳树防务原计划北京时间5月28日发射的载人龙飞船由于天气原因推迟至北京时间5月31日发射。此次发射任务由Space X公司研发的猎鹰9号&#xff08;Falcon 9&#xff09;运载火箭搭载龙飞船&#xff08;Crew Dragon&#xff09;执行&#xff0c;目的是将两名NAS…

android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果

画廊在很多的App设计中都有&#xff0c;如下图所示&#xff1a;该例子是我没事的时候写的一个小项目&#xff0c;具体源码地址请访问https://www.easck.com/>使用方式布局中添加该自定义控件xmlns:tools"http://www.easck.com/tools"android:layout_width"ma…

人工智能产业发展深度报告:格局、潜力与展望

来源&#xff1a;华泰证券人工智能市场格局人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是利用机器学习和数据分析方法赋予机器模拟、延 申和拓展类人的智能的能力&#xff0c;本质上是对人类思维过程的模拟。AI 概念最早始于 1956 年 的达特茅斯会…

DVA框架统一处理所有页面的loading状态

dva 有一个管理 effects 执行的 hook&#xff0c;并基于此封装了 dva-loading 插件。通过这个插件&#xff0c;我们可以不必一遍遍地写 showLoading 和 hideLoading&#xff0c;当发起请求时&#xff0c;插件会自动设置数据里的 loading 状态为 true 或 false 。然后我们在渲染…

2022第十二届PostgreSQL中国技术大会-核心PPT资料下载

一、峰会简介 本次大会以“突破•进化•共赢 —— 安全可靠&#xff0c;共建与机遇”为主题&#xff0c;助力中国数据库基础软件可掌控、可研究、可发展、可生产&#xff0c;并推动数据库生态的繁荣与发展。大会为数据库从业者、数据库相关企业、数据库行业及整个IT产业带来崭…

Ionic3 环境搭建以及基础配置实现(更新中)

GitHub:https://github.com/Teloi 环境配置输入以下命令安装 Ionic &#xff08;如果刚才设置了淘宝镜像源&#xff0c;可以使用 cnpm 代替 npm&#xff09;&#xff1a;npm install -g ionic需要注意的是&#xff0c;如果之前安装过 Ionic 2 的 beta 版本&#xff0c;需要先卸…

饶毅:脑、物理、化学、 生物、心理认知的交叉研究

本文转自公众号&#xff1a;脑科学学术笔记饶毅&#xff1a;脑、物理、化学、生物、心理认知的交叉研究陈鹏&#xff1a;作为一名科学家&#xff0c;饶老师用分子生物学和遗传学研究神经系统的发育和功能&#xff0c;从果蝇到人脑&#xff0c;从细胞到高级功能&#xff0c;他用…

构建城市大脑的未来标准,9个值得探索的规范

简述&#xff1a;50年来互联网从网状向类脑架构进化并与城市建设结合是城市大脑产生的根源。城市大脑建设是工程问题&#xff0c;但首先也是基础科学问题&#xff0c;掌握科技发展规律是发现和构建城市大脑建设标准的基础。通过总结互联网大脑模型的特征&#xff0c;提出了城市…