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;进…

map key char*

STL中map的key能否用char 呢&#xff1f;当然可以&#xff01; 在程序中需要用到一个map&#xff0c;本来是这样写的&#xff0c; map<string, int> mapStr; 为了追求效率&#xff0c;把string改成了char &#xff0c; map<char , int> mapStr; 结果呢&#xff1f;…

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

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

c语言第一周作业答案,C语言程序设计下mooc答案.pdf

《C语言程序设计下mooc答案.pdf》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言程序设计下mooc答案.pdf(27页珍藏版)》请在装配图网上搜索。1、2016.03.2806.30 北京理工大学 MOOC C语言程序设计(下)网上作业答案 第一周编程作业 1、求最大公约数和最小公倍数(…

吃货联盟

public class eat {public static void main(String[] args) {Scanner input new Scanner(System.in);String[] names new String[4]; // 订餐人名字String[] dishMegs new String[4]; // 保存所选的信息,包括菜品名及份数int[] times new int[4]; // 保存订餐时间double[]…

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…

c语言编程安全队列,C语言编程队列的实现

queue.c功能函数&#xff1a;#include "queue.h"static void CopyToNode(Item item,Node *pn){pn->item item;}static void CopyToItem(Node *pn, Item *pi){*pi pn->item;}/* 把队列初始化为空&#xff0c;就是设置尾指针为NULL并设置项数(items成员)为0 */…

良好编程习惯的养成

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

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

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

c语言课程设计模块结构图,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*************************************************查询函数**********************************************/void search(){int flag,j,x;char w[20];FILE *fp;char v[20];printf("(1)按作者\n");printf("(2)按…

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

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

c语言中异或指令,C语言总结之异或运算的一些特性及巧妙应用

原标题&#xff1a;C语言总结之异或运算的一些特性及巧妙应用1&#xff0e;一个数和自己做异或的结果是0。如果需要一个常数0&#xff0c;x86平台的编译器可能会生成这样的指令&#xff1a;xorl %eax, %eax。不管eax寄存器里的值原来是多少&#xff0c;做异或运算都能得到0&…

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;对数字孪生相关…

c语言xc比较大小写,XCTestAPI文档.docx

XCTestAPI文档XCTest准备工作对于新项目&#xff0c;在新建项目界面勾选上UI Tests&#xff1b;对于旧项目&#xff0c;在项目界面点击菜单栏中的FileNewTarget…iOSTestiOS UITesting Bundle。sleepForTimeInterval:线程休眠[NSTread sleepForTimeInterval:1.0f];也可以使用sl…

C语言编写一个备份文件,2014年3月二级C语言上机题库备份.doc

全国计算机等级考试二级C语言上机题库第一套程序填空程序通过定义学生结构体数组&#xff0c;存储了若干个学生的学号、姓名和三门课的成绩。函数fun的功能是将存放学生数据的结构体数组&#xff0c;按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划…

图解机器学习

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

BZOJ 4819: [Sdoi2017]新生舞会

二次联通门 : BZOJ 4819: [Sdoi2017]新生舞会 /*BZOJ 4819: [Sdoi2017]新生舞会二分 01分数规划 最小费用流二分出一个答案费用流检验*/ #include <cstdio> #include <iostream> #include <queue> #include <cstring>const int BUF 12312312; char …