vim上でgdbを使えるようにした

emacsみたいにvimからgdb使えないかなーと探してみたら、「vimGdb」というものがあることを知ったので、試してみる。
http://clewn.sourceforge.net/

まずはvim7.1とvimGdbのソースを落として解凍し、公式サイトを参考にパッチを当てる。

$ cd /usr/local/src
$ tar xjf vim-7.1.tar.bz2
$ tar xzf vimgdb71-1.13.tar.gz
$ patch -d vim71 --backup -p0 < vimgdb/vim71.diff

vimコンパイル

$ ./configure --prefix=/home/myname/lib/vim7 --enable-multibyte --enable-fontset --enable-ruby --enable-python --enable-ctags --with-features=big --enable-gettext --enable-iconv --enable-langmap --enable-signs --enable-gdb

・・エラーorz

checking for tgetent()... configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.
Or specify the name of the library with --with-tlib.

ncursesは入ってるけど、ncurses-develが入ってなかったので、yumで入れる。
再度configure・・・通った♪

$ make
$ make install

インストールしたvimを使うように.zshrcに設定を書く。

# User specific aliases and functions
alias vi='/home/myname/lib/vim7/bin/vim'
alias vim='vi'

後は公式サイト通りに

# cp ../vimgdb/vimgdb_runtime.tgz ~/.vim
# cd ~/.vim
# tar xzf vimgdb_runtime.tgz
# rm vimgdb_runtime.tgz
# cd doc
# vim
「:helptags .」コマンドを実行。
「:help vimgdb」コマンドを実行。

.vimrcにvimgdbの設定を書く。helpに書いてある参考設定をそのまま使った。
(ただし、:set gdb=gdb_invocation → :set gdb=gdb

わーい。
では、改めて先ほどのv8でhelloworldで作ったa.outをvimGdbでデバッグしてみる。

# vim

を押して、を押すとgdb用の入力行が出る。
file ./a.out としたらgdbが開始された!
後は普通にgdbを実行すると、vim上で該当箇所が開かれて、ソース見ながら処理が追える。
すげーこれ、C++まだ全然読めないけど何か楽しくなってきたー。

helpよりキーバインド一覧

<Space> launch the interactive gdb input-line window
CTRL-Z  send an interrupt to GDB and the program it is running
B       info breakpoints
L       info locals
A       info args
S       step
I       stepi
CTRL-N  next: next source line, skipping all function calls
X       nexti
F       finish
R       run
Q       quit
C       continue
W       where