----------------------------------------
a. vimgdb 环境的建立。
----------------------------------------
这篇文档不是为初学者看的,只是用过的人的一个提示。
1. vimgdb 需要下载vim 源码, 并打vimgdb 补丁. 编译(--enable-gdb),安装完成后。 再把vimgdb 运行库放到vim plugin 目录下。
a. sudo apt-get source vim // ubuntu 下打过补丁的源码包。
或者取原始包(原始包应该也可以。):
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
b、下载vimgdb-for-vim7.4源码
wget https://github.com/larrupingpig/vimgdb-for-vim7.4/archive/master.zip -O vimgdb-for-vim74.zip
c、解压所有文件,并应用补丁文件
tar xjvf vim-7.4.tar.bz2 -C /tmp
unzip vimgdb-for-vim74.zip -d /tmp
cd /tmp
patch -p0 < vimgdb-for-vim7.4-master/vim74.patch
cd vim74/src
./configure --enable-gdb --prefix=/usr/local/vim74
--enable-multibyte
--enable-fontset
--enable-xim
--enable-gui=auto
--enable-pythoninterp=dynamic
--enable-pythoninterp
--enable-python3interp=dynamic
--enable-rubyinterp=dynamic
--enable-rubyinterp
--enable-perlinterp
--enable-cscope
--enable-sniff
--with-x
--with-features=huge
--enable-luainterp=dynamic
注意: 打完补丁,不配置直接进行下一步也可以,默认配置很好。可以支持clip,gdb,python等
若要保证clipboard 功能,需要保证配置时能找到X11头文件,请查看config.log, 可能需要下列开发包:
sudo apt-get install libxt-dev
sudo apt-get install libsm-dev
sudo apt-get install libxaw7-dev
才能顺利通过配置检测,成功添加clipboard功能! 若你遇到问题,可以给我留言。
make
如果报缺少curses, 先安装libncurses5-dev
make 时优化选项过高(-o6), 运行make install 发现 vim 有运行错误
所以,清除后用下面CFLAGS,没有发现问题。 这是网上找的,验证无误。这种小啾啾最坑人。
make CFLAGS="-O2 -D_FORTIFY_SOURCE=1"
sudo make install
这样编译出来会安装到 /opt 下, 不在系统$PATH 下, 若想安装到系统目录
编辑vim/src/Makefile, 找到/opt 项,3行,分别注释掉,再make, make install 就好了
三行为:
#BINDIR = /opt/bin
#MANDIR = /opt/share/man
#DATADIR = /opt/share
2. 用helptags doc 目录,生成帮助索引。
3. 检查是否成功安装。 用 :help vimgdb , 将有帮助文档
----------------------------------------
b. 使用,结合实例
----------------------------------------
1. 手工加载键映射: macros/gdb_mappings.vim :run macros/gdb_mappings.vim
2. 也可自动加载映射: 把该文件copy 到plugin 目录
验证: 按
实例: 我喜欢这个小阶乘程序。 代码如下
#include
int factorial(int n, int *rt);
int main(int argc, char *argv[])
{
int i;
int result =1;
for(i=1; i< 6; i++)
{
factorial(i, &result);
printf("i:%d, result:%d\n",i,result);
}
return 0;
}
int factorial(int n, int *rt)
{
if(n <=1)
*rt = n;
else
{
factorial(n-1,rt);
*rt *=n;
}
return 0;
}
cat Makefile
actorial:factorial.c
gcc -g -Wall -o factorial factorial.c
调试:
a. 打开文件,例如 vim factorial.c
b. 建立gdb 调试窗口
当gdb_mappings.vim 插件加载后, 按 空格 将会弹出gdb 命令串口。
在gdb 命令窗口输入gdb, 将会弹出gdb 调试输出窗口。
再创建一个gdb 变量观察窗口, 它的名字叫gdb-variables. 例如用vim 命令 :bel 20vsplit gdb-variables
c. 加载执行程序。开始调试
例如: 在gdb 命令窗口中,输入file factorial. 在输出窗口中有信息输出。
设置断点: 在代码窗口中,光标处按 ctrl-b, 设置断点。是蓝色行 注意观察输出窗口。
运行: R, 相当于gdb 命令窗口中 run 命令, 停在断点处,黄色行提示。
记不住命令,可以用map 查看有关gdb 的键映射。
添加观察变量到观察串口。
双击变量名称,按ctrl-p 键。
也可以在gdb 命令窗口中调用createvar 命令
单步执行:S, 单步步过:ctrl-n, 不习惯可以改映射。不过最后尊重原著。 单步指令 I, 不熟悉不要用
继续运行: C,
结束本函数: F,
----------------------------------------
vimgdb : 又总结了两条,
vimgdb 窗口和操作技巧
----------------------------------------
甲. vimgdb 中的窗口
vimgdb 是把vim和gdb 结合起来的一个仿真ide环境。
图形窗口集成环境(以后简称ide)有许多窗口,其中最重要的是变量观察窗口。
vimgdb 中有4个窗口。
1. 源码窗口,这个不用说了, 你观察代码的地方,而且是vim 的文件窗口
2.gdb 命令行窗口。
当你用F7 加载vimgdb key map 时,敲空格键,就看见它了,你可以输入任何gdb 命令,控制程序执行。
好处是它是vim 窗口,可以使用vim 的操作技巧。
3. 输出窗口,
在gdb窗口中敲入file xxx, 加载执行程序,会再创建2个窗口,其中在顶部输出gdb 调试信息的是输出窗口
它是一个无名窗口, gdb 控制信息及程序输出信息会打印到这里。
另一个是变量窗口,它是隐含的。
4. 变量观察窗口。
你用:ls 命令可以看到它的名字,
然后用:topleft 40vsplit gdb-variables 把它打开,随后你可以添加关注的变量到里面。
乙:vimgdb 操作控制技巧
1. 添加变量到变量窗口。
ide的调试常常用拖拽的方式把监视变量放到监视窗口
ctrl-v 选中变量,ctrl-p 添加到变量窗口
vimgdb 命令行方式: createvar xxx, 将xxx 放入gdb 变量窗口
用:h gdb-createvar 可以看到帮助解释
2. 观察变量的值。
快捷键中包含了我们最常用的gdb 命令,这样就很少打开gdb 命令窗口了,调试代码就象阅读代码
ide 中常用tooltip 窗口提示, vimgdb中用ctrl-p, ctrl-x 观察
ctrl-p 打印变量的值,经常用, ctrl-x 打印指针所指的内容
3. 执行控制
ide 中常用F7, F8, F10 等功能键控制,
vimgdb 中, ctrl-n 执行下条语句是常用的, S(跟入), C(继续), ctrl-b(设置断点),ctrl-e(删除断点)
gdb 功能虽强,但常常容易迷失在单步跟踪里, 虽然你能用l 看到代码,而vimgdb 正好弥补这个缺陷,使我们对流程有个直观认识。