vim+gdb=vimgdb完美安装教程

本人系统Ubuntu12.04

参考:

1.安装vimgdb  http://blog.csdn.net/citongke1/article/details/8438904

2.http://wenku.baidu.com/link?url=kBUbeLW6wEVRrDgoWaxrEAqyaz3UjzI69shh-yZK6pE-ay9C_Uq-4R16xofs3no5opdTtUnOMxsY4v-UswKnN_sm3J8WkZK0MdWgWnOY32m

相关链接:http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/

[ 下载vim源代码 ]

首先我们需要下载vim的源码。到vim主页(最快直接ftp://ftp.vim.org/pub/vim/unix)下载当前最新的vim 7.2的源代码,假设我们把代码放到~/install/目录,文件名为vim-7.2.tar.bz2。

[ 下载vimgdb补丁 ]

接下来,我们需要下载vimgdb补丁,下载页面在:

http://sourceforge.net/project/showfiles.php?group_id=111038&package_id=120238

在这里,选择vim 7.2的补丁,把它保存到~/下载/vimgdb72-1.12.tar.gz。

[ 打补丁 ]

运行下面的命令,解压源码文件,并打上补丁:

cd ~/install/
tar xjf vim-7.2.tar.bz2
tar xzf vimgdb72-1.14.tar.gz
patch -d vim72 --backup -p0 < vimgdb/vim72.diff 

[ 定制vim的功能 ]

缺省的vim配置已经适合大多数人,但有些时候你可能需要一些额外的功能,这时就需要自己定制一下vim。定制vim很简单,进入~/下载/vim72/src文件,编辑Makefile文件。这是一个注释很好的文档,根据注释来选择:

  • 如果你不想编译gvim,可以打开–disable-gui选项;
  • 如果你想把perl, python, tcl, ruby等接口编译进来的话,打开相应的选项,例如,我打开了–enable-tclinterp选项;
  • 如果你想在vim中使用cscope的话,打开–enable-cscope选项;
  • 我们刚才打的vimgdb补丁,自动在Makefile中加入了–enable-gdb选项;
  • 如果你希望在vim使用中文,使能–enable-multibyte–enable-xim选项;
  • 可以通过–with-features=XXX选项来选择所编译的vim特性集,缺省是–with-features=normal
  • 如果你没有root权限,可以把vim装在自己的home目录,这时需要打开prefix = $(HOME)选项;

编辑好此文件后,就可以编辑安装vim了。如果你需要更细致的定制vim,可以修改config.h文件,打开/关闭你想要的特性。

[ 编译安装 ]

编译和安装vim非常简单,使用下面两个命令:

make
make install 

你不需要手动运行./configure命令,make命令会自动调用configure命令。

上面的命令执行完后,vim就安装成功了。

我在编译时打开了”prefix = $(HOME)”选项,因此我的vim被安装在~/bin目录。这时需要修改一下PATH变量,以使其找到我编辑好的vim。在~/.bashrc文件中加入下面这两句话:

PATH=$HOME/bin:$PATH
export PATH 

退出再重新登录,现在再敲入vim命令,发现已经运行我们编译的vim了。 


安装vimgdb的runtime文件 

运行下面的命令,解压vimgdb的runtime文件到你的~/.vim/目录:

cd ~/下载/vimgdb/
tar zxf vimgdb_runtime.tgz -C ~/.vim/ 

现在启动vim,在vim中运行下面的命令以生成帮助文件索引:

:helptags ~/.vim/doc 

现在,你可以使用”:help vimgdb“命令查看vimgdb的帮助了。

至此,我们重新编译了vim,并为之打上了vimgdb补丁。下面我以一个例子来说明如何在vim中完成”编码—编译—调试”一条龙服务。 

可能会出现的一些问题:

1. 编译vim72时,需要安装terminal library 或 ncurses

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

解决方法:离线安装terminal library就可以,如ncurses 或者,执行sudo apt-get install libncurses5-dev

我采用后者编译通过。

http://wenku.baidu.com/link?url=kBUbeLW6wEVRrDgoWaxrEAqyaz3UjzI69shh-yZK6pE-ay9C_Uq-4R16xofs3no5opdTtUnOMxsY4v-UswKnN_sm3J8WkZK0MdWgWnOY32m

2. 直接在vim官网上下的vim7.2,编译无报错,运行vim输出如下错误或类似错误:

*** buffer overflow detected ***: vim terminated

*** buffer overflow detected ***: gvim terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x37)[0x7ffd4e4675f7]
/lib/libc.so.6[0x7ffd4e4665a0]
gvim[0x43e433]
gvim[0x43ef19]
gvim[0x43fcb0]
gvim[0x4481aa]
gvim[0x46602b]
gvim[0x4644f1]
gvim[0x4588c1]
gvim[0x5672a8]
gvim[0x553bb9]
gvim[0x5673d9]
gvim[0x49f498]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7ffd4e38eabd]
gvim[0x40e9d9]
======= Memory map: ========
00400000-005d7000 r-xp 00000000 08:05 77232                              /usr/local/bin/vim
007d6000-007d7000 r--p 001d6000 08:05 77232                              /usr/local/bin/vim
007d7000-007ea000 rw-p 001d7000 08:05 77232                              /usr/local/bin/vim
007ea000-007f5000 rw-p 00000000 00:00 0 
0210f000-02225000 rw-p 00000000 00:00 0                                  [heap]
7ffd48298000-7ffd482ae000 r-xp 00000000 08:01 2220                       /lib/libgcc_s.so.1
7ffd482ae000-7ffd484ad000 ---p 00016000 08:01 2220                       /lib/libgcc_s.so.1
7ffd484ad000-7ffd484ae000 r--p 00015000 08:01 2220                       /lib/libgcc_s.so.1
7ffd484ae000-7ffd484af000 rw-p 00016000 08:01 2220                       /lib/libgcc_s.so.1
7ffd484af000-7ffd484d2000 r-xp 00000000 08:05 6753                       /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd484d2000-7ffd486d1000 ---p 00023000 08:05 6753                       /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd486d1000-7ffd486d2000 r--p 00022000 08:05 6753                       /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd486d2000-7ffd486d3000 rw-p 00023000 08:05 6753                       /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
7ffd486d3000-7ffd486db000 r-xp 00000000 08:05 3267                       /usr/lib/libltdl.so.7.2.0
7ffd486db000-7ffd488db000 ---p 00008000 08:05 3267                       /usr/lib/libltdl.so.7.2.0
7ffd488db000-7ffd488dc000 r--p 00008000 08:05 3267                       /usr/lib/libltdl.so.7.2.0
7ffd488dc000-7ffd488dd000 rw-p 00009000 08:05 3267                       /usr/lib/libltdl.so.7.2.0
7ffd488dd000-7ffd488ea000 r-xp 00000000 08:05 3548                       /usr/lib/libtdb.so.1.1.5
7ffd488ea000-7ffd48ae9000 ---p 0000d000 08:05 3548                       /usr/lib/libtdb.so.1.1.5
7ffd48ae9000-7ffd48aea000 r--p 0000c000 08:05 3548                       /usr/lib/libtdb.so.1.1.5
7ffd48aea000-7ffd48aeb000 rw-p 0000d000 08:05 3548                       /usr/lib/libtdb.so.1.1.5
7ffd48aeb000-7ffd48af0000 r-xp 00000000 08:05 3354                       /usr/lib/libogg.so.0.6.0
7ffd48af0000-7ffd48cef000 ---p 00005000 08:05 3354                       /usr/lib/libogg.so.0.6.0
7ffd48cef000-7ffd48cf0000 r--p 00004000 08:05 3354                       /usr/lib/libogg.so.0.6.0
7ffd48cf0000-7ffd48cf1000 rw-p 00005000 08:05 3354                       /usr/lib/libogg.so.0.6.0
7ffd48cf1000-7ffd48d10000 r-xp 00000000 08:05 3594                       /usr/lib/libvorbis.so.0.4.0
7ffd48d10000-7ffd48f0f000 ---p 0001f000 08:05 3594                       /usr/lib/libvorbis.so.0.4.0
7ffd48f0f000-7ffd48f10000 r--p 0001e000 08:05 3594                       /usr/lib/libvorbis.so.0.4.0
7ffd48f10000-7ffd48f1e000 rw-p 0001f000 08:05 3594                       /usr/lib/libvorbis.so.0.4.0
7ffd48f1e000-7ffd48f25000 r-xp 00000000 08:05 3598                       /usr/lib/libvorbisfile.so.3.2.0
7ffd48f25000-7ffd49124000 ---p 00007000 08:05 3598                       /usr/lib/libvorbisfile.so.3.2.0
7ffd49124000-7ffd49125000 r--p 00006000 08:05 3598                       /usr/lib/libvorbisfile.so.3.2.0
7ffd49125000-7ffd49126000 rw-p 00007000 08:05 3598                       /usr/lib/libvorbisfile.so.3.2.0
7ffd49126000-7ffd49135000 r-xp 00000000 08:05 2747                       /usr/lib/libcanberra.so.0.1.7
7ffd49135000-7ffd49334000 ---p 0000f000 08:05 2747                       /usr/lib/libcanberra.so.0.1.7
7ffd49334000-7ffd49335000 r--p 0000e000 08:05 2747                       /usr/lib/libcanberra.so.0.1.7
7ffd49335000-7ffd49336000 rw-p 0000f000 08:05 2747                       /usr/lib/libcanberra.so.0.1.7
7ffd49336000-7ffd4933d000 r-xp 00000000 08:01 2288                       /lib/librt-2.10.1.so
7ffd4933d000-7ffd4953c000 ---p 00007000 08:01 2288                       /lib/librt-2.10.1.so
7ffd4953c000-7ffd4953d000 r--p 00006000 08:01 2288                       /lib/librt-2.10.1.so
7ffd4953d000-7ffd4953e000 rw-p 00007000 08:01 2288                       /lib/librt-2.10.1.so
7ffd4953e000-7ffd49542000 r-xp 00000000 08:05 3125                       /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49542000-7ffd49741000 ---p 00004000 08:05 3125                       /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49741000-7ffd49742000 r--p 00003000 08:05 3125                       /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49742000-7ffd49743000 rw-p 00004000 08:05 3125                       /usr/lib/libgthread-2.0.so.0.2200.2
7ffd49743000-7ffd49746000 r-xp 00000000 08:05 2745                       /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49746000-7ffd49946000 ---p 00003000 08:05 2745                       /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49946000-7ffd49947000 r--p 00003000 08:05 2745                       /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49947000-7ffd49948000 rw-p 00004000 08:05 2745                       /usr/lib/libcanberra-gtk.so.0.1.1
7ffd49948000-7ffd4994d000 r-xp 00000000 08:05 6801                       /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd4994d000-7ffd49b4c000 ---p 00005000 08:05 6801                       /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd49b4c000-7ffd49b4d000 r--p 00004000 08:05 6801                       /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd49b4d000-7ffd49b4e000 rw-p 00005000 08:05 6801                       /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
7ffd49b4e000-7ffd49b71000 r--p 00000000 08:05 55938                      /usr/share/locale-langpack/zh_CN/LC_MESSAGES/gtk20-properties.mo
7ffd49b71000-7ffd49b7d000 r-xp 00000000 08:01 2249                       /lib/libnss_files-2.10.1.so
7ffd49b7d000-7ffd49d7c000 ---p 0000c000 08:01 2249                       /lib/libnss_files-2.10.1.so
7ffd49d7c000-7ffd49d7d000 r--p 0000b000 08:01 2249                       /lib/libnss_files-2.10.1.so
7ffd49d7d000-7ffd49d7e000 rw-p 0000c000 08:01 2249                       /lib/libnss_files-2.10.1.so
7ffd49d7e000-7ffd49d88000 r-xp 00000000 08:01 2259                       /lib/libnss_nis-

2.10.1.so
7ffd49d88000-7ffd49f87000 ---p 0000a000 08:01 2259                       /lib/libnss_nis-2.10.1.so|49;0MVim: 拦截到致命信号(deadly signal) ABRT
Vim: 结束。


解决办法:终于解决问题了

参考如下
http://gcc.gnu.org/ml/gcc-bugs/2008-11/msg01317.html

貌似是gcc的升级造成的问题

解决办法是把Makefile 中设置 CFLAGS = -O2 -D_FORTIFY_SOURCE=1或 make时直接加参数

make CFLAGS="-O2 -D_FORTIFY_SOURCE=1"

如此一试,不行了,再

make CFLAGS="-O3 -D_FORTIFY_SOURCE=1"

如此一试

http://forum.ubuntu.org.cn/viewtopic.php?t=240806

你可能感兴趣的:(vim+gdb=vimgdb完美安装教程)