IDEA集成xdebug远程调试功能

博客原文连接php

在使用php调试代码的时候,我一般都是使用简单暴力的echo之类的输出调试。这种调试方法的效率与我的能力正相关,你加一个echo多数是为了验证本身的一个推测,那么你对代码越熟悉,你推测的就会越准确,bug解决的就越快,相反则每每如无头苍蝇般,东一头西一头,不知所谓地输出一些无心义的调试信息,效率奇低。此时单步调试工具便成了救命稻草,有了它,你能够查看代码执行过程当中全部变量的值,心如明镜,解个bug还不手到擒来。对于php,经常使用的就是xdebug,我这里就简单讲下IDEA里面如何使用xdebug进行代码调试。浏览器

安装

咱们先把xdebug安装好,因为这里是远程调试,因此xdebug要安装到php运行的服务器上,若是php是在本地环境中,那就直接安装到本地,官方安装文档在这里,我这里简单讲一下Centos 6.6+PHP 5.4的安装方法。服务器

  1. 下载而且编译xdebug。
    下载连接-xdebug-2.2.7.tgz架构

    wget http://xdebug.org/files/xdebug-2.2.7.tgz
    tar zxvf xdebug-2.2.7.tgz
    cd xdebug-2.2.7
    phpize&make&make installapp

  2. 修改php配置框架

在php.ini中增长以下一行:
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.soeclipse

安装完毕!ide

运行原理

在实际使用前,咱们来简单了解xdebug远程调试的原理,这样当xdebug不听话的时候,咱们也知道从哪里收拾它。详细文档参见此处工具

xdebug远程调试分为两部分:调试客户端和xdebug服务端。前者就是运行咱们代码调试器的地方,我这里是IDEA,后者是xdebug运行的地方。当咱们尝试使用xdebug进行调试时,客户端会监听一个端口,等待xdebug来链接,一旦链接成功,双方就开始通讯,进行代码调试。优化

dbgp-setup.gif

图一,源图

图一动态展现了xdebug运行的原理,左边是调试客户端,好比IDEAeclipse之类的IDE,右边是xdebug,运行按照以下步骤进行:

  1. IDE监听一个调试端口,默认是9000,能够自行配置。

  2. 用户访问右边php环境的server,咱们这里使用浏览器访问,通常IDE会自动帮咱们在正常的url后面增长XDEBUG_SESSION_START=name的参数。这个参数是用来通知xdebug主动链接IDE9000端口进行调试的,没有这个参数,xdebug不会去主动链接IDE,调试也就不会触发。

  3. xdebug主动去链接IDE9000端口, 链接成功后,调试开始。

细心的同窗可能会问,xdebug是如何知道IDE监听9000端口的呢?好问题,答案就在配置文件里面。xdebug有两个配置:remote_hostremote_port,分别表明IDE的ip地址和监听端口。因而可知,IDExdebug必须协商好监听端口。

另外一个问题又来了,端口好办,可是若是个人ip会变化,那我换一个ip,岂不是要修改下xdebug.remote_host配置吗?好麻烦!!!不知道ip不要紧,xdebug能够本身知道,只要设置xdebug.remote_connect_back为1就能够了,其运行原理见图二,实现很简单,xdebug能够从http请求的头部获取ip地址,以后就用该ip地址做为remote_host来链接。

dbgp-setup2.gif

图二,源图

php.ini配置

到这里,相信你们已经基本了解xdebug的原理了,本着好记性不如烂笔头的准则,这里把个人配置列一下,方便查阅。

[xdebug]
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.remote_port=9444
xdebug.remote_autostart=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/logs/xdebug/xdebug-profiler"

没讲到的配置,你们自行查阅文档,太懒会变成猪的!!!

IDEA配置

最后一步就是IDEA,也即IDE的配置了。主要有两方面要配置:

其一,监听端口配置,对于IDEA系列,能够在配置中搜索Debug或者xdebug就能迅速定位了,图三是个人配置。

Screen Shot 2015-02-01 at 20.31.16.png

图三

其二,是本地开发路径和远程路径的映射配置,也就是要让本地代码和远程代码能够对应起来。配置位置在项目的Run/Debug Configuration里面,也就是去新建一个调试项目,截图以下。
idea1.png

图四

idea2.png

图五

按照图五中配置好mapping关系后,开始使用xdebug的调试功能吧,告别简单粗暴甚至低效的echo输出调试吧!

后记

使用echo输出调试,不少时候是由于开发者懒,懒得集成调试工具,懒得去优化本身的开发环境。碰到小bug使用echo还行,一旦遇到诡异bug或者复杂的框架,牢牢靠echo已然无能为力。固然,单步调试的另外一个好处是可让初学者快速掌握项目的架构和执行流程。

书山有路勤为径,学海无涯苦做舟!!!

相关文章
相关标签/搜索