在Linux下面用vim和XDebug调试PHP » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

在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中添加以下东东来修改配置:

 let g:debuggerPort = 端口号

debugger.vim 这个插件默认快捷键配置如下:

 :调整窗口大小
 :step into (步进)
 :step over (步过)
 :step out ( 步出 )

dr :调整窗口大小
di :step into 
do :step over
dt :step out

 :开始调试
 :退出调试

 :step into
 :step over
 :step out

 :debugger context
 :debugger property

但是上面的快捷键有几个(如F2,F3,F4)是我已经用的了,因此我给它做了小小的修改,
还有F11一般用于最大化窗口,如我在xfce环境下就是的。
还有它绑定的F1设置得非常不合理,因此默认情况下F1用于帮助菜单。。。囧
就按照zendstudio的来吧,不喜欢几个工具同样的快捷键功能不同,太折腾人了。
下面是我做的修改:

map  :python debugger_command('step_into')
map  :python debugger_command('step_over')
map  :python debugger_command('step_out')

map  :python debugger_run()
map  :python debugger_quit()
map  :python debugger_context()

上面的F5 / F6 / F7 功能我都修改成和zendstudio里面一样的了。

xdebug 的配置:

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 参数后,刷新页面。

调试的快捷键和命令,上面基本上列出来了,这里就不重复了。
调试中:

vim-xdebugger.png

还有如: 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)


该插件做的事情很简单,就是6秒钟后新建当前tab并在后面加上XDEBUG_SESSION_START=1 这个参数。

还有一个是easy Xdebug :: Add-ons for Firefox
这样,在火狐浏览器里面就可以很方便调试了,不用手动加那个XDEBUG_SESSION_START
参数了。

Tagged in : PHP,VIM,Linux,XDebug,调试,Debug

All Comments (0)
Gravatar image
No Comments