首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当gdb程序在termianl-debug模式下输出过多时vim阻塞

当gdb程序在terminal-debug模式下输出过多时,vim可能会出现阻塞的情况。这是因为vim默认情况下是单线程运行的,当gdb程序输出大量信息时,vim无法及时处理这些信息,导致阻塞。

为了解决这个问题,可以尝试以下几种方法:

  1. 使用异步插件:可以安装一些异步插件,如vim-asyncrun或vim-dispatch,这些插件可以在后台运行gdb程序,避免阻塞vim。你可以通过在vim中执行异步命令来启动gdb,并将输出结果显示在vim的其他窗口中。
  2. 增加vim的缓冲区大小:可以通过设置vim的缓冲区大小来增加其处理输出信息的能力。在vim中执行以下命令可以增加缓冲区大小:
  3. 增加vim的缓冲区大小:可以通过设置vim的缓冲区大小来增加其处理输出信息的能力。在vim中执行以下命令可以增加缓冲区大小:
  4. 这将使vim在处理大量输出时更加高效。
  5. 使用tmux或screen:可以使用tmux或screen等终端复用工具来分离vim和gdb程序的运行环境。这样,当gdb程序输出大量信息时,可以切换到另一个终端窗口,而不会影响vim的运行。
  6. 优化gdb程序的输出:如果可能的话,可以尝试优化gdb程序的输出,减少输出的数量或者将输出写入文件而不是终端。这样可以减少对vim的影响。

总结起来,当gdb程序在terminal-debug模式下输出过多时,可以通过使用异步插件、增加vim的缓冲区大小、使用终端复用工具或优化gdb程序的输出来解决vim阻塞的问题。这样可以提高开发效率并改善用户体验。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

技术分享 | 数据库源码学习调试利器之 CGDB

按 ESC 键,会进入上半部分的代码展示窗口,能像在 vim 中那样用快捷键上下移动光标进行查看。 如果要返回 gdb 的窗口,按 i 键即可,就能继续执行调试命令了。.../mysqld 调试 采用此方式调试 mysqld 时,其还未被 attach 到 mysqld 上时,并不会阻塞新的连接。 此时只能设置断点,查看某个函数源码文件中的位置。...示例 4:分析 coredump 文件 程序异常崩溃时,如果配置 coredump,就可以通过分析 coredump 文件来排查程序崩溃的原因。... cgdb 中也打印了 mysqld 崩溃的原因,是收到了 SIGTRAP(5) 的信号量。 如果对信号量不太熟悉,可用 kill -l 命令查看,它会输出所有信号量。...程序崩溃时,如果能拿到故障现场的 coredump 文件,可通过 CGDB 去分析程序崩溃的原因,如:特定场景调用某个函数时触发了程序的 bug 而引发的崩溃。

11210

LinuxGDB调试指令总结

摘要 之前写C++的一些程序都是windows,直接使用VS2017的傻瓜式编译器,最近尝试摸索linux进行C++程序的编译,有了一些成果!特此总结!...代码编辑器:VS Code(虽然vim很强大,但我觉得的vim查看和修改少量代码更为适合,编辑整个程序文件还是用VS Code吧) 代码编译器:虽然VS Code有对应的C++插件,还是感觉不舒服,所以笔者还是使用指令...这次主要介绍GDB指令,其他编译方法和指令请自行上网查询! 启动gdb后,可以进入到交互模式,通过以下命令对程序完成调试工作!...g++ -g -std=c++11 main.cpp gdb a.out 常用的指令如下: 01 运行指令: run(简写r): 运行程序遇到断点后,程序会在断点处停止运行,等待用户输入下一步命令...call 函数(参数):调用程序中可见的函数,并传递“参数”,如:call gdb_test(55) quit(简写q) : 退出gdb 02 设置断点: break n (简写b n):第n行处设置断点

4.5K20
  • Linux常用指令

    服务器部署会经常用到linux,很多时候都是用的时候上网查一指令,然后用完过不了多久就忘记了,因此本文记录一些自己常用的linux指令,以作备忘。并不断添加。...d: | uniq -c b、查看linux版本:#lsb_release -a c、重启电脑:#reboot d、查看进程:#ps -aux e、杀死进程:#kill pid f、查看某个程序什么位置...tar压缩:#tar xcvf  dst src b、tar解压:#tar xvf dst  c、zip压缩:#zip -r dst src d、unzip解压:#unzip  dst 4、vi/vim...常用 a、i ->切换成输入模式 b、esc ->切换到命令模式 c、:q ->退出指令 d、:wq ->保存并退出 e、数字+/- ->加或者减多少行 f、ctrl+f/d ->后翻页...g、ctrl+b/u ->前翻页 h、ctrl+n/m ->翻行 i、ctrl+e/y ->上翻行 j、hjkl ->上下左右 k、ctrl+s/q ->终止屏幕输出和恢复输出 l、:1/gg

    3.6K30

    Linux工具学习之【gdb

    其实此时可以直接把这个看作VS中的黑框框,r 就相当于 F5 ,没有断点的情况程序会直接出结果的,而最终的结果值也会紧跟着输出 b 断点操作 断点在 gdb 中意为 breakpoint...变量编号 //取消监视指定变量 快速跳转 gdb 提供了一些快速跳转的指令,赋予了我们不打断点的情况进行跳转的权力(注:先要打断点将程序运行起来),这是VS做不到的 until 指定行 程序运行后...,跑完当前函数 (gdb) finish //不打断点的情况跑完当前函数 c 断点 这个指令就是针对断点的了,前面说 r 无法实现两个断点间的跳转,因此有一个专门的命令 c 进行断点跳转(注:...,不取消断点的情况让断点失效 (gdb) disable 断点编号 //关闭断点 能关闭当然也能打开 (gdb) enable 断点编号 //打开断点 set var 设置条件 给变量设置条件...的全部介绍了,gdb 是一款功能丰富的调试器,它赋予了我们纯命令行环境下调试代码的能力,虽然它的使用门槛高,但用熟后就会很顺手,配合我们之前学习vim、gcc ,能做到像VS那样的开发环境,让我们的

    20020

    GDB调试指南-源码查看

    前言 我们调试过程中难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式查看源码或对源码进行编辑。.../usr/share/vim /usr/share/man/man1/vim.1.gz $ which vim /usr/bin/vim 设置之后,就可以gdb调试模式进行编辑源码了,使用命令edit...编辑完保存后,别忘了重新编译程序: (gdb)shell gcc -g -o main main.c test.c 这里要注意,为了gdb调试模式执行shell命令,需要在命令之前加上shell,表明这是一条...这样就能在不用退出GDB调试模式的情况编译程序了。...GDB-TUI 但是本文不作介绍,有兴趣的可以探索一。 总结 本文介绍了GDB调试中的源码查看,源码编辑以及如何在GDB调试模式执行shell命令。

    2.2K40

    GDB入门教程之如何使用GDB启动调试

    GDB (The GNU Project Debugger)是 Linux 系统下调试 C 和 C++ 程序的主要神兵。本文介绍多种方式使用 GDB 启动进程调试的方法和命令。...要使得 C 和 C++ 程序能在 GDB 正常进行调试,必须在程序编译期间把基本的调试信息(如变量名、函数名、函数调用堆栈等)添加到可执行文件中。...一、GDB调试未执行程序 对于本地的某个二进制文件 demo ( GDB 也支持远程调试),若其启动时不需要命令行参数,则可以shell使用命令 gdb demo 进入 GDB,并输入 run (缩写形式...对于使用多线程模式的进程,可以 GDB 中使用 info threads 命令显示当前进程中所有线程的基本调试信息,包括:GDB 分配的线程ID、线程堆栈等。...三、GDB调试core文件 程序 Linux 系统下发生异常崩溃(如段错误)时,内核会将该应用程序崩溃发生时的内存数据、程序调用堆栈等核心信息转存到磁盘,这种功能称之为 core dump,中文可翻译为

    4.3K10

    Linux基础——Linux开发工具(中)_gccg++

    前言:在上一篇我们简单介绍了yum,vim的一些常用的指令和模式,现在让我们来进一步了解其他的Linux环境基础开发工具gcc/g++,gdb。...如果对前面yum和vim有什么不懂的建议回顾去回顾上期知识!!! Linux开发工具(yum, vim) 首先让我们来初步了解一本篇的内容: 1. 学习gcc/g++,并能学会如何使用 2....Linux调试器-gdb使用 首先了解一程序发布的方式: 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 debug...版本:程序本身会加入调试信息,可以进行调试 release版本:不会添加任何调试信息,是能调试 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 因为debug版本,会加入调试信息...我们想进入gdb模式,我们可以: 指令:gdb 文件名 我们想退出gdb模式,我们可以: 指令:ctrl + d 或 quit 下面给大家介绍一常用的gdb指令: 调试: r或run:

    15910

    GDB调试入门,看这篇就够了

    源码查看 前言 我们调试过程中难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式查看源码或对源码进行编辑。.../usr/share/vim /usr/share/man/man1/vim.1.gz $ which vim /usr/bin/vim 设置之后,就可以gdb调试模式进行编辑源码了,使用命令edit...编辑完保存后,别忘了重新编译程序: (gdb)shell gcc -g -o main main.c test.c 这里要注意,为了gdb调试模式执行shell命令,需要在命令之前加上shell,...这样就能在不用退出GDB调试模式的情况编译程序了。...但是本文不作介绍,有兴趣的可以探索一。 小结 本节介绍了GDB调试中的源码查看,源码编辑以及如何在GDB调试模式执行shell命令。

    7.6K62

    gdb调试】ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解

    默认情况GDB 不会在每次调试时自动显示行号。...效果图如下: 然后运行以下命令使其生效: source ~/.bashrc 这样使用vim 打开文件就会显示行数了 2.2 准备测试程序 使用vim文本编辑器新建一个.c文件 vim tree3_01...这段输出 GDB 中设置断点的结果: (gdb): 这是 GDB 的提示符,表示它正在等待用户输入命令。...因此, GDB 尝试访问地址 0x0 时,操作系统会阻止这种访问,因为这个地址不属于程序的有效内存范围。...通常情况,访问空指针会导致程序出现段错误(Segmentation fault),这是因为试图未分配的内存地址上读取或写入数据会导致操作系统干预并终止程序的执行,以保证系统的稳定性和安全性。

    11010

    从零开始学习MySQL调试跟踪(1)

    ,直到遇到下一个断点 set var name=v 设置变量的值 start st 开始执行程序,main函数的第一条语句前面停下来 file 装入需要调试的程序 kill k 终止正在调试的程序...) (gdb) (gdb) b mysql_execute_command #<--- 输入指令"b dispatch_command"设置断点,意为GreatSQL程序运行到这个函数时,就会停下来...= 0x7f10a3a0e828 "select 'debug' from dual", length = 24} (gdb) (gdb) c #<-- 继续执行,终端#2里被阻塞的SQL语句就可以执行了...o 指定输出到某个文件 O 类似o,每次写文件都会flush,reopen P 匹配DBUG_PROCESS p 打印process name t 打印函数调用和退出 使用案例1(精简模式) # 设置...P.S,我也MacOS环境构建了基于vscode的跟踪调试环境,但还是更喜欢Linux终端命令行模式下工作,所以本文没介绍如何利用vscode跟踪调试,有兴趣的读者可以根据其他资料自行构建。

    43610

    猿创征文 | 【Linux】调试器-gdb使用

    文章目录 一、知识铺垫 1.背景 2.默认行为(重要) 3.debug和release 二、使用 三、总结 一、知识铺垫 1.背景 程序的发布方式有两种,debug模式和release模式,而想进行调试只能在发布方式为...debug版本 Linux gcc/g++出来的二进制程序,默认是release模式,这也就意味着无法调试 linux要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 到这里...,结合我们前面所学的知识,对于一些默认行为,我们可以进行总结一 2.默认行为(重要) gcc默认行为 1.默认是动态链接的(静态要加static) 2.默认是release vim默认行为...默认情况gdb无法进行对现在发布的程序进行调试(默认是release版本) 输入gdb进入以下界面:(release) 不能调试,而且我们可以看看下大小: (debug):改变Makefile...我们学习了yum工具,进行软件安装 掌握vim编辑器使用,学会vim的简单配置,掌握gcc/g++编译器的使用,并了解其过程,原理 掌握简单gdb使用于调试,掌握简单的Makefile编写,了解其运行思想

    83520

    Goland 这些实操技巧,你可能还不会!

    vim-go 真心就不推荐了,入门曲线太过陡峭,太过华而不实(vim 党不要喷我),我们就写程序而已,何苦为难自己呢。 我日常开发中,Goland,Vscode 一般会配合使用。...Goland Debug 调试 这里首先吐槽 delve,对于用惯 gdb 的人来说,delve 简直弱爆了。 举个例子,gdb 有个非常强大的 x[1] 功能,能够去观察变量内存分布情况。...更多时候我喜欢使用 goland 调试代码,基本满足日常的开发需求。这里分享几种进入 debug 模式的方式。 对于后端开发来说,一个趁手的接口调试工具是不可缺少的。...调试演示 主要步骤: 打断点 点击 debug 按钮启动程序 Postman 调用接口 单步调试 有些情况,我们封装完底层基础函数后,接口调用该函数一直报错。...打断点 设置参数 一般情况,不管我们使用 Goland 启动程序还是 Debug,都会遇到让输入参数的情况的。这个是个蛮重要的功能,但是很多同学不会设置。

    73710

    Goland 这些实操技巧,你可能还不会!

    vim-go 真心就不推荐了,入门曲线太过陡峭,太过华而不实(vim 党不要喷我),我们就写程序而已,何苦为难自己呢。 我日常开发中,Goland,Vscode 一般会配合使用。...Goland Debug 调试 这里首先吐槽 delve,对于用惯 gdb 的人来说,delve 简直弱爆了。 举个例子,gdb 有个非常强大的 x[1] 功能,能够去观察变量内存分布情况。...更多时候我喜欢使用 goland 调试代码,基本满足日常的开发需求。这里分享几种进入 debug 模式的方式。 对于后端开发来说,一个趁手的接口调试工具是不可缺少的。...主要步骤: 打断点 点击 debug 按钮启动程序 Postman 调用接口 单步调试 有些情况,我们封装完底层基础函数后,接口调用该函数一直报错。...设置参数 一般情况,不管我们使用 Goland 启动程序还是 Debug,都会遇到让输入参数的情况的。这个是个蛮重要的功能,但是很多同学不会设置。

    1.3K40

    Linux开发工具——gdb

    与gcc/vim一样,Linux的调试功能也是独立的一个工具——gdb 那么我们话不多说,开启今天的话题!...✈️ gdb背景  我们知道,程序的发布方式有两种:dubug模式 和 release模式。  Linux gcc/g++编译出来的 二进制程序,默认是release模式。  ...区别就是,debug模式形成的可执行程序会给我们添加调试信息。release模式形成的可执行程序会给我们去掉调试信息。...结论:release模式程序体积更小,性能更好,debug模式可以进行调试,release模式下不能调试!   ...用法: 程序在运行时直接输入s回车即可。 测试用例:   vs中,我们可以调试里的监视窗口对变量的内容或者地址进行显示。   而在Linuxgdb中,我们使用如下命令来显示变量内容和地址。

    21110

    linux进行c++开发经验总结

    这一周主要就是linux进行c++的开发,以此为契机记录下遇到的问题....include和library路径,再运行cmake和make命令即可完成编译 查错 VERBOSE模式,输出具体的gcc编译命令,方便查错,通过make VERBOSE=1 选项来开启模式 配置 可以通过...log到磁盘文件,想要实时监控日志文件的更新内容,可以使用tail -f filename命令,它会在文件内容有更新时将结果输出到命令窗口 调试 使用gdb调试C++程序 编译时加 -g -gstabs.../prog 进入gdb交互环境,通过命令set args xxx来设置参数,然后r来运行 通过设置,使程序挂掉时生成core文件,通过gdb ..../prog gmon.out -b 查看输出 原理: 每个函数中插入count函数,这样函数调用时就会计算次数和时间 缺点: 无法分析多线程程序;无法观察IO时间 valgrind工具 可以使用它的Memcheck

    1.3K20

    Linux调试工具

    然而,调试一个交互式终端程序,输入通常是更重要的输出。......其他项目如termrec / termplay,nethack-recorder /播放器和脚本/ scriptreplay只记录输出。然而,调试一个交互式终端程序,输入通常是更重要的输出。......其他项目如termrec / termplay,nethack-recorder /播放器和脚本/ scriptreplay只记录输出。然而,调试一个交互式终端程序,输入通常是更重要的输出。......更多vim-ruby-debugger信息 windows编译和调试远程GDB BVRDE BVRDE是一款“Remote Compile IDE”,主要功能为:windows...其他项目如termrec / termplay,nethack-recorder /播放器和脚本/ scriptreplay只记录输出。然而,调试一个交互式终端程序,输入通常是更重要的输出。...

    9.9K43

    GDB调试-从入门实践到原理

    开发过程,如果程序的运行结果不符合预期,第一时间就是打开GDB进行调试,在对应的地方设置断点,然后分析原因;线上服务出了问题,第一时间查看进程在不在,如果不在的话,是否生成了coredump文件,如果有...打印输出 通常情况调试的过程中,我们需要查看某个变量的值,以分析其是否符合预期,这个时候就需要打印输出变量值。...默认情况多进程程序中,GDB只调试main进程,也就是说无论程序调用了多少次fork()函数创建了多少个子进程,GDB默认情况,只调试父进程。...(gdb) 在上述命令中,我们做了如下操作: show follow-fork-mode:通过该命令来查看当前处于什么模式,通过输出可以看出,处于parent即父进程模式 set follow-fork-mode...❝gdb中输入where命令,可以获取堆栈调用信息。进行coredump调试时候,这个是最基本且最有用处的命令。where命令输出的结果包含程序中 的函数名称和相关参数值。

    2.9K30

    Linux基础操作

    whereis 一些特定的目录下文件或者目录名 @[TOC] vim模式 命名模式:可以移动光标,进行复制,粘贴之类的命令操作 插入模式:可以进行编写 底行模式底行中进行相应的操作 vim的使用...刚进入vim的时候是命令模式。...命令:不退出vim执行相关操作 set nu/nonu:显示/取消行号 vs 文件名:分屏操作 下面讲述命令模式的一些操作 yy:复制,nyy从当前行到n行复制。...h,j,k,l:左,,上,右 移动光标。 ~:大小写切换。 Shift r:替换模式,直接覆盖原来的。...gdb 调试 对于一个可执行程序要有调试信息,在用gcc/g++时可以加上-g生成调试信息,下面让我们开始进行调试的一点简单的方法。 gdb会记下上一次的命令。 gdb 可执行性程序:进入调试。

    48320
    领券