你在Vim中debuggingC ++代码吗? 怎么样?

问题在于所有使用Vim开发C ++应用程序的人。

我的生活中有一段时间,可以形容为'我讨厌Vim !!!''Vim很好!

但是,在微软开发IDE中,我已经习惯了那些debugging代码,观察窗口,调用堆栈和主代码的F5F11快捷键 – 所有可见的命令都不需要input任何GDB命令。

所以,这是一个问题:

你也使用Vim进行debugging吗? 或者你为此切换到一些IDE? 哪一个?

对于那些使用Vim来debugging代码的人来说:有没有插件可以在编辑器中设置断点,突出显示当前正在debugging的行,在步骤中自动导航,步入,退出?

请不要告诉我你使用GDB作为命令行,只能看到一行被debugging的行等

与其他答案相比,至less有三个选项可以满足你的要求: clewn , pyclewn和vimgdb 。

这三个项目都是相关的。 vimgdb是针对Vim的补丁,需要重新编译Vim。 clewn是一个独立的程序,通过Netbeans套接字接口与Vim进行通信。 这需要使用+netbeans选项来构buildVim(最近的Linux发行版就是这种情况,所以不应该是个问题)。

引用clewn的网站:

Clewn在vim编辑器中实现了完整的gdb支持:断点,监视variables,gdb命令完成,汇编窗口等。

我想你一定要放手一搏。

pyclewn网站的主页显示了三个项目之间的比较。

几个月前,我尝试了pyclewn。 build立起来有点困难,但看起来很好,但看起来很好。 我只是做了一些testing,你可以设置书签等等,这是你通常从graphics化debugging器中得到的东西。 我最终不是因为偶然的原因使用它,而是渴望再次尝试。

Vim是一个很好的编辑器,但是为了debugging,我使用了一个debugging器(比如GDB)。

但是你不必在文本模式下使用GDB; 您可以使用像KDbg , DDD或Insight这样的graphics前端。

有办法让GDB进入Vim(但是你可以得到基于文本的debugging)。

使用源代码级别的debugging器只是诊断错误程序行为的许多方法之一,而且我很less发现自己启动了一个 – 尽pipe事情很简单。

所以对我来说, 使用一个恰好也是debugging器的文本编辑器根本没有固有的优势 。 相反,我使用我喜欢的文本编辑器 – 与我select使用的debugging器无关。 目前,我主要使用geditkdbg来实现这些目的,但是这些select会随着时间的推移而独立进化。

刚刚在一个应用程序上工作了很长时间,需要在运行的设备上安装一些东西,我在vim中编写代码,使用脚本自动构build,将其推送到服务器,那里有一个脚本,注意到与二进制文件一起推送的定点文件。 然后这将重新启动相应的服务,在另一个SSH窗口中,我有一个tail -f运行在我的日志文件。

长话短说,我根本没有使用debugging器。 如果我有意想不到的事情发生,那么我只是提高日志级别,重做日志,查看死亡之前logging的最后一件事情,然后分析并解决问题。

好的一点是,当客户环境中出现问题时,我只需要一个debugging级别的日志,并且可以在不需要访问服务器的情况下识别问题。

…但是,是的,曾经有过这样的情况,那就是有一个debugging器。

我使用vim + ctags + taglist在Windows和* nix系统上编写和浏览代码。 据我所知在vim中没有办法使用debugging器,所以我使用外部debugging器(VS,windbg,gdb …)。

GDB edit命令

使用以下命令打开当前行上的编辑器:

 $EDITOR +<current-line> <current-file> 

默认的editorex ,但是vim也能理解+<current-line>格式。

当你退出编辑器,你回到gdb

这允许你自由地浏览源代码,如果你有ctags集成,那么这个function特别强大。

这是一个穷人的内置单向GDB到VIM的集成:主要的缺点是从Vim设置断点。

edit和中心

edit不会在源代码中默认居中放置Vim,所以我创build了一个Python脚本来实现它: 如何在GDB的文本编辑器的当前行中打开当前文件?

断点命令剪贴板帮手

这个vim命令复制一个types为:

 b <file-path>:<line-number> 

到剪贴板:

 command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.') 

然后你可以把它粘贴到gdb

这是一个穷人的gim集成,以缓解设置断点。