2010-08-21 27 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廣發行整合,以緩解設置斷點。