安装vimgdb

备忘:(1)改变文件权限--将root权限改变成普通用户

$sudo  -s

#chmod 777 -R Files  //-R表递归的意思

(2)要设置当前日期或时间,可用:
date  -d  mm/dd/yy  及 date  -s  hh:mm:ss
  例:date  -d  10/17/2008
      date  -s  10:12:13

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

[ 下载vim源代码 ]

首先我们需要下载vim的源码。到vim主页下载当前最新的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中完成”编码—编译—调试”一条龙服务。

PS:按上述步骤安装后发现vim命令输入已经失效,变为vi命令代替。

:helptags ~/.vim/doc 
只有在root权限下,才能写入。还好只要执行一次就可以使用”:help vimgdb“命令

[ 问题四: 按空格后vimgdb的命令窗口没有弹出来? ]

http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb-faq/

ps:泪奔啊,有弹一次,现在都弹不出来,看来得

用命令CTRL+Z和fg切换裸奔gdb啊。

ps:没有成功的原因:

执行make前,注意执行下列语句:

./configure --enable-gui=gtk2  --enable-tclinterp --enable-cscope --enable-gdb --enable-multibyte

--enable-xim --enable-fontset --with-features=huge  prefix=/usr/local/share/vim

才能打上补丁

ubuntu vim7.2 vimgdb安装方法http://blog.chinaunix.net/uid-20761674-id-260256.html

http://blog.csdn.net/waynexx/article/details/8260486

在使用vimgdb调试会出现以下情况:

(gdb) list
没有符号表被读取。请使用 "file" 命令。

主要原因

在编译的时候

gcc -g hello.c -o hello

没有加-g,所以gdb的时候报错

vimgdb基本命令:

cd 目录文件夹

file 可执行文件的名字 :装载可执行文件

R:从代码入口处运行到第一个断点处,(其中断点处不被执行,以下也是)
C:继续,从一个断点执行到相邻另一断点,(注意首先必须先执行R命令)
B:断点信息

N:(next)执行一行源代码但不进入函数内部;

S:(step)步进,执行一行源代码而且进入函数内部;
F:结束
^b:设断点
^e:清除断点
^n:下一个
^u:向上
^d:向下
^p:选中
当前光标后面的单词作为查看的变量名

在cmdline窗口可键入gdb命令

使用gdb注意 -g 选项,和首先要执行file命令和run命令才能执行其他的命令

file:装入想要调试的可执行文件 例如 file 可执行文件的名字

k(ill):终止正在调试的程序;        直接写 kill 不带可执行文件的名字

list:列出产生执行文件的源代码的一部分

next:执行一行源代码但不进入函数内部;

step:执行一行源代码而且进入函数内部;

run:执行当前被调试的程序;

//quit:终止gdb

//watch:能监视一个变量的值 而不管它何时被改变;

//print:显示表达示的值;

//break:在代码里设置断点,这将使程序执行到这里时被挂起;

make:不退出gdb就可以重新产生可执行文件

shell:不离开gdb就执行UNIX shell命令   

能用快捷键尽量用快捷键

2012.12.28 晚记

添加变量到变量窗口查看

在Command Line窗口输入

cr(eatevar)  i 

然后enter  ,其中上面括号内可以省略,这可能得益于模式匹配吧。

如果是结构体等里的变量则需要将结构体名和成员写在一起成一个变量。

例如 cr  keycode_1.keyNum;

而^p  命令是将变量输入到gdb窗口查看:

例如:

(gdb) print i
  $1 = 0
2013.1.4 下午

反汇编调试

在vimgdb窗口输入disas(emmble) 函数名称

2013.1.6

1. 利用print 命令可以检查各个变量的值。 
(gdb) print p (p为变量名)

2. whatis 命令可以显示某个变量的类型

(gdb)whatis p

type = int *

3. print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容: 
l 对程序中函数的调用 
(gdb) print find_entry(1,0) 
l 数据结构和其他复杂对象 
(gdb) print *table_start 
$8={e=reference=’\000’,location=0x0,next=0x0}

断点的管理 

1.

break NUM 在指定的行上设置断点。

显示当前gdb的断点信息: 
(gdb) info break 
他会以如下的形式显示所有的断点信息: 
Num Type Disp Enb Address What 
1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155 
2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168 
(gdb)

2.    删除指定的某个断点: 
(gdb) delete breakpoint 1 
该命令将会删除编号为1的断点,如果不带编号参数,将删除所有的断点 
(gdb) delete breakpoint 
3.    禁止使用某个断点 
(gdb) disable breakpoint 1 
该命令将禁止断点 1,同时断点信息的 (Enb)域将变为 n 
4. 允许使用某个断点 
(gdb) enable breakpoint 1 
该命令将允许断点 1,同时断点信息的 (Enb)域将变为 y 
5.清除原文件中某一代码行上的所有断点 
(gdb)clean number 
注:number 为原文件的某个代码行的行号
’\000’,location=0x0,next=0x0}

相关链接:http://blog.chinaunix.net/uid-23622436-id-3202448.html

http://www.cnblogs.com/zhuyp1015/category/376363.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值