Xdebug + Eclipse 单步跟踪调试PHP代码

澳门新葡亰网址 2

本文主要介绍如何在服务器上用VIM +
XDebug调试PHP程序,目前虽然有不少介绍如何用Eclipse +
XDebug在开发人员工作机上调试PHP的文章,但对于如何系统的配置VIM +
XDebug还是比较少的,而且目前关于VIM设置的文章都用一个比较老的插件。这里主要介绍一个新插件DBGPavim,它相对于老的一些插件有很多优势。同时该插件可完美的用于Python程序的调试。另外VIM

工具介绍:

  • XDebug相对于Eclipse + XDebug也有不少优势,将在文章讲述。

1. Xdebug

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),相当强大,它可以用来跟踪,调试和分析PHP程序的运行状况。Xdebug现在的最新版本是Xdebug
2.1.0, 下载页面是

5.2 VC6 (32 bit) 下载,文件名是php_xdebug-2.1.0-5.2-vc6.dll:

澳门新葡亰网址 1

实现原理

澳门新葡亰网址 2

DBGp是调试器后台和调试器界面通信的一种协议,用于多种脚本语言的调试。XDebug是用于调试PHP的DBGp实现。VIM要和XDebug互通,实现PHP的调试,需要能够理解DBGp协议,并能发送DBGp指令。DBGPavim就是这样一个插件,它使VIM能够接受DBGp请求,并发送DBGp指令,以达到调试目的。DBGPavim的名字源于DBGp@VIM。

ActiveState提供了用于调试Python/Ruby的DBGp实现Komodo Remote Debugging
Package,后面有一节将讲到如何使它和VIM互通,以调试Python。用户将能以此类推出如何调试ruby/nodejs等脚本语言。

2. Eclipse

Eclipse
是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。使用它,可以为我们的PHP开发带来很多便利,软件可在其官网下载。

 

配置XDebug

  1. 安装XDebug可以参考
  2. 编辑php.ini,加入以下两行:

    zend_extension=/path/to/xdebug.so
     xdebug.remote_enable=1
    
  3. 编辑你的httpd.conf,加入以下行:

     php_value xdebug.remote_autostart 1
    

如果有多个开发人员同时需要调试不同的VirtualHost,可以在你的VirtualHost段中加入以下行:

 php_value xdebug.remote_port 9009

注:这里的9009就是VIM作为DBGp服务器应当监听的端口,不同的开发人员在不同的VirtualHost中用各自不同的端口号。这个端口号和下一节提到的dbgPavimPort要一致。不加这一行,默认的端口号是9000。
澳门新葡亰网址,最后可通过phpinfo.php检查你的XDebug配置是否正确,你必须能够看到以下这些行的值如下(主要是前两列):

xdebug.remote_autostart  On  Off
 xdebug.remote_enable   On  On
 xdebug.remote_handler  dbgp    dbgp
 xdebug.remote_host 127.0.0.1   127.0.0.1
 xdebug.remote_port 9009    9000

phpinfo.php文件内容如下:

<?php
     phpinfo();
 ?>

安装与配置:

配置VIM + DBGPavim

DBGPavim插件本身是用Python实现的,所以需要你的VIM支持Python
2.7。打开你的VIM,输入命令

:version

如果能看到“+python”,说明你的VIM是支持Python的。
如果看到的是“-python”,说明你的VIM不支持Python,你可以按如下步骤编译自己的VIM:

  1. 安装Python 2.7
  2. export path=/path/to/python2.7/bin:$PATH
  3. 用以下命令编译VIM:

 ./configure --prefix=/opt/vim --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config
 make
 make install

注:这里的/usr/lib/python2.7/config取决于你把Python2.7安装到什么位置。

从这里或者这里下载DBGPavim,放到你的~/.vim目录下,并编辑的你的~/.vimrc,加入以下两行:

let g:dbgPavimPort = 9009
let g:dbgPavimBreakAtEntry = 0

注:这里的9009和上一节的9009要一致,如果上一节没有配置xdebug.remote_port,这里也不需要配置,因为它们都会使用默认的9000。
dbgPavimBreakAtEntry=0告诉VIM不在入口处停下,这样只会在断点处停下。

你可以重新启动VIM,按F5检查你的DBGPavim配置是否正确。如果你配置成功的话,你会做VIM窗口的右下角看到提示信息如下:

bap-LISN-9009

它表示VIM目前正在监听9009端口,bap说明它只会在断点处停下,其他提示信息格式如下:

<bae|bap>-<LISN|PENDn|CONN|CLSD>

断点状态

bae Break At Entry,在入口处停下
bap Break only At breakPoints,只在断点处停下

调试器状态

LISN 调试器已启动,正处于监听状态。
PEND-n  调试器已捕捉到连接请求,可以按F5进入调试模式了。
CONN    VIM正处于调试模式中。
CLSD    调试器已停止。

1. 安装Xdebug

Eclipse的安装就不说了。Xdebug安装的方法不难,首先将下载到的文件重命名为
php_xdebug.dll
放置到PHP的ext/目录下,然后修改php.ini文件,在文件末尾加上下列几行:

[Xdebug]
; 指定xdebug 扩展文件的位置(路径请根据自己的情况做调整)
zend_extension_ts = “F:/library/php_xdebug-2.1.0-5.2-vc6.dll”
; 启用xdebug 远程调试
xdebug.remote_enable = 1
; 以下xdebug 调试选项实际上是默认值
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.remote_mode = req
xdebug.remote_handler = dbgp

zend_zend_extension_ts中的ts表示线程安全,如果你的PHP并非线程安全请写成zend_extension。完整的配置项及说明见

保存php.ini后重启服务器,查看phpinfo()的输出,若在页面上能看到下面的画面则安装成功:

澳门新葡亰网址 3

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图