2010-08-21 70 views
117

问题在于所有使用Vim开发C++应用程序的人。你在Vim中调试C++代码吗?怎么样?

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

然而,长大大多微软开发的IDE,我已经习惯了那些F5 - F11快捷方式调试代码时,监视窗口,调用堆栈和主代码 - 所有可见而不需要键入任何GDB命令。

所以,这里的问题:

你使用Vim,以及进行调试?或者你为此目的切换到某个IDE吗?哪一个?

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

请不要告诉我你用GDB的命令行,看到的只是一个线,调试等

+0

我相信你仍然可以找到用“ed”开发和调试的人。 – 2010-08-21 06:27:17

+40

噢,我的上帝,他们回答问题“调试我的C++代码plz”,但关闭* this *因为太局部化了......荒谬! – 2010-08-21 15:32:35

+10

试试'gdb -tui'。 – Jayesh 2013-03-07 20:02:50

回答

65

与其他答案相比,至少有三个选项可以满足您的要求:clewnpyclewnvimgdb

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

要从clewn网站引述:

Clewn实现全面GDB支持vim编辑器:断点,观察变量,GDB命令完成,装配窗等

我想你应该肯定会放弃它。

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

几个月前我试过pyclewn。建立起来有点困难,但看起来很好,但看起来很好。我只是做了一些测试,并且可以设置书签等等,这些都是图形调试器所期望的。我因为偶然的原因最终没有使用它,但我渴望再次尝试。

+4

Conque GDB是一个不错的选择。易于安装,简单而且非常强大。 – Druesukker 2013-05-09 10:58:54

+0

@UncleZeiv vimgdb已过时。我在这里表达了一个更新的需要:https://github.com/larrupingpig/vimgdb-for-vim7.4/issues/4 – hlin117 2015-01-13 03:54:48

+0

@Druesukker,你的答复值得一正式的答案! – solotim 2017-11-17 04:34:05

1

刚刚最近在弄一个应用,需要一堆东西很长一段时间在它正在运行的盒子上(设备设置),我在vim中编写代码,使用脚本自动化构建,将其推送到服务器,该服务器有一个脚本,以便注意与二进制文件一起推送的哨兵文件。然后这将重新启动相应的服务,并在另一个ssh窗口中运行我的日志文件tail -f

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

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

...但是,有些时候它会很高兴有一个调试器。

12

Vim是一个很好的编辑器,但要做调试,我使用了一个调试器(比如GDB)。

但是,您不必在文本模式下使用GDB;您可以使用像KDbgDDDInsight这样的图形前端。

有一些方法可以让GDB进入Vim(但是你可以获得基于文本的调试)。

+2

尝试gdbtui ..基于终端但相当有效.. – Jack 2010-08-21 07:06:28

+0

gdbtui也不错。 – Johan 2010-08-22 12:33:22

0

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

3

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

对于我来说,使用文本编辑器也不是什么固有的优点,它也是一个调试器。相反,我使用我喜欢的文本编辑器 - 与我选择使用的调试器无关。目前,我主要使用geditkdbg为这些目的,但这些选择随着时间的推移而独立演变。

+0

除非你在kde/gnome-free开发主机上开发远程。 – user826955 2015-10-14 06:06:40

0

GDB edit命令

打开使用命令在当前行的编辑器:

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

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

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

这使您可以自由地浏览源代码,如果您有集成ctags,则特别强大。

这是一个穷人的内置单向gdb与vim的集成:主要的缺点是从Vim设置断点。

edit和中心

edit没有中心的Vim通过围绕源默认情况下,所以我创建了一个Python脚本,做它:How to open the current file at the current line in a text editor from GDB?

断点命令到剪贴板助手

该VIM命令复制类型的断点指定符:

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

到剪贴板:

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

然后,你可以粘贴到gdb

这是一个穷人的VIM广发行整合,以缓解设置断点。