在Linux下面用vim和XDebug调试PHP
在读了Andrei Zmievski(Yahoo! Inc)写的 vim-for-php-programmers后,又了解了一个功能强大的插件debugger.vim。
DBGp client – a remote debugger interface to the DBGp protocol (tested only with XDebug/PHP) : vim online
使用此插件,要求你的vim编译时加上了python 和signs 功能:
要检测可通过
:version
看有没有+python 和 +signs字样。如果没有就自己重新编译一下vim吧。
插件作者的博客有相关介绍:
How to Debug PHP with Vim and XDebug on Linux | Tech Blog
First, we need to make sure vim is compiled correctly. Type :version in your Vim and check the features section. If you have +python and +signs, you’re good to go.
如果xdebug不是配置在默认的9000端口的话,可以通过在.vimrc中添加以下东东来修改配置:
1 | let g:debuggerPort = 端口号 |
debugger.vim 这个插件默认快捷键配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <f1> :调整窗口大小 <f2> :step into (步进) <f3> :step over (步过) <f4> :step out ( 步出 ) <leader>dr :调整窗口大小 <leader>di :step into <leader>do :step over <leader>dt :step out <f5> :开始调试 <f6> :退出调试 <f7> :step into <f8> :step over <f9> :step out <f11> :debugger context <f12> :debugger property |
但是上面的快捷键有几个(如F2,F3,F4)是我已经用的了,因此我给它做了小小的修改,
还有F11一般用于最大化窗口,如我在xfce环境下就是的。
还有它绑定的F1设置得非常不合理,因此默认情况下F1用于帮助菜单。。。囧
就按照zendstudio的来吧,不喜欢几个工具同样的快捷键功能不同,太折腾人了。
下面是我做的修改:
1 2 3 4 5 6 7 | map <F5> :python debugger_command('step_into')<cr> map <F6> :python debugger_command('step_over')<cr> map <F7> :python debugger_command('step_out')<cr> map <F8> :python debugger_run()<cr> map <F9> :python debugger_quit()<cr> map <F10> :python debugger_context()<cr> |
上面的F5 / F6 / F7 功能我都修改成和zendstudio里面一样的了。
xdebug 的配置:
1 2 3 4 5 6 | zend_extension=/usr/lib/php/modules/xdebug.so xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_mode = "req" ; connect on request start debug.remote_port=9000 xdebug.remote_handler=dbgp |
如何使用:
打开浏览器,键入你要调试的页面,在最后加一个参数:
XDEBUG_SESSION_START=1
如:
http://example.com/index.php?XDEBUG_SESSION_START=1
这将在你的浏览器里面设置一个cookie,该cookie将在一个小时后失效。它告诉XDebug
模块每当一个页面被一个调试客户端加载时,它在9000端口监听,并且与客户端建立
连接。比较cool的事情是,如果它不能建立连接的话,它就仅仅加载这个页面,让cookie留在那里这是不会造成任何问题的。
然后我们回到vim,按F5(我这里应该是按F8),
你将会在窗口下面看到如下提示信息:
waiting for a new connection on port 9000 for 5 seconds.
现在你有5秒钟的时间来刷新你的PHP页面。这样将会和客户端(这里是vim)建立连接。
然后,速度打开要调试的页面,加上XDEBUG_SESSION_START=1 参数后,刷新页面。
调试的快捷键和命令,上面基本上列出来了,这里就不重复了。
调试中:
还有如: Bp Up Down 等命令。。。。
这里还找到一个firefox插件,vimxdebug
vimxdebug :: Add-ons for Firefox
vimxdebug 目前好像只能装在ff3.x版本,我修改了下让它可以在ff4.0上安装和使用:
vimxdebug-0.1-fx-for-ff4.xpi 下载 (5.7 KB, 5 次)
该插件做的事情很简单,就是6秒钟后新建当前tab并在后面加上XDEBUG_SESSION_START=1 这个参数。
还有一个是easy Xdebug :: Add-ons for Firefox
这样,在火狐浏览器里面就可以很方便调试了,不用手动加那个XDEBUG_SESSION_START
参数了。






