http://blog.chinaunix.net/uid-16235175-id-3275023.html
记录一下刚刚配置成功的 vim+xdebug+DBGp 单步调试 php:
Vim : vim7.3
PHP : 5.2.14 fast-cgi
Xdebug : 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:
- sudo apt-get install python python-dev
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,解压后,进入目录:
- your_php_bin_path/phpize
- ./configure
- make
- make install
- zend_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
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、调试技巧
F1 | resize | 调整窗口大小 |
F2 | step into | 单步执行 |
F3 | step over | |
F4 | step out | |
F5 | run | 开始执行,或跳至断点执行 |
F6 | quit debugging | 退出调试模式 |
F11 | get all context | 获取所有变量内容 |
F12 | get property at cursor | 获取当前光标变量内容 |
:Bp | toggle breakpoint | 设置断点 |
:Up | stack up | |
:DN | stack down | |
为了能看到php数组的值,还需要设置下.vimrc:
- let g:debuggerMaxDepth = 5