最近公司把开发环境转移到linux上,vim真是如鱼得水,可以尝试很多以前在win下不支持的插件,海皮海皮~!
记录一下刚刚配置成功的 vim+xdebug+DBGp 单步调试 php:
OS : ubuntu 10.10 64bitVim : vim7.3PHP : 5.2.14 fast-cgiXdebug : 2.1.1 DBGp : 1.1.1
1、编译vim7.3
首先安装依赖包:
依赖包apt-get update
apt-get -y install gcc g++ make mercurial libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev wmctrl
因为插件需要python、sign支持,所以首先要求OS上安装了python,一般系统自带python,但是不会自带python开发包,所以需要另外手动安装,ubuntu 安装python2.6:
pythonsudo apt-get install python python-dev
vim7.3编译参数:
vim7.3编译参数./configure \
--prefix=/usr/local/modules/vim/vim73 \
--with-features=huge\
--enable-pythoninterp=yes\
--with-python-config-dir=/usr/lib64/python2.6/config \
--enable-gui=gnome2\
--enable-cscope \
--enable-fontset \
--enable-perlinterp=yes\
--enable-tclinterp \
--enable-multibyte
sudo make & make install
注意这一行:--with-python-config-dir=/usr/lib64/python2.6/config因为我是64位系统,所以使用的地址是:/usr/lib64,如果是32位系统,应该使用:/usr/lib/...编译完成后,看一下vim --version ,如有python和sign前面是+,不是-,就说明配置成功了。
为了装这个python支持,费了好多功夫,网上例子多数都是只写了编译时加上--enable-pythoninterp,然后python用系统自带的就可以了,但是我编译完了,version里的python始终是不支持,后来才发现,有两个注意点:1、大部分linux系统自带的是有python,但是还需要安装python开发包,在apt源里,python2的开发包是python-dev,python3的开发包是python3-dev;2、如果系统里装了多个版本的python,或者系统是64位,需要在编译参数里指定python-config-dir。
2、配置xdebug从这里下载最新版的xdebug,解压后,进入目录:
安装xdebugyour_php_bin_path/phpize
./configure
make
make install修改php.ini
php.inizend_extension="/usr/local/modules/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_host=localhost重启php-cgi或者web server后,查看phpinfo,如果看到xdebug的参数信息,说明配置正确。
3、配置DBGp到这里下载最新版的DBGp vim插件,当然,最新版也是07年更新的了,不过不影响使用。解压后,把debugger.vim 和 debugger.py两个文件都放到vim的plugin目录下,就安装完成了,vim的插件就是这么简单。
4、调试好了,磨完刀了,可以砍柴了,用vim打开一个php文件,然后在浏览器里通过http访问这个文件,后面加上?XDEBUG_SESSION_START=1参数,回到vim,摁下F5,然后在5秒内刷新刚才浏览器里打开的那个页面,vim就变成了这个样子:
5、调试技巧F1resize调整窗口大小
F2step into单步执行
F3step over
F4step out
F5run开始执行,或跳至断点执行
F6quit debugging退出调试模式
F11get all context获取所有变量内容
F12get property at cursor获取当前光标变量内容
:Bptoggle breakpoint设置断点
:Upstack up
:DNstack down为了能看到php数组的值,还需要设置下.vimrc:
.vimrcletg:debuggerMaxDepth=5