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

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

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
参数了。

更多
No Responses Post a comment

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS