Xdebug的安装、配置和使用

对于我这么一个渣渣php码农,平时总以为echo、var_dump、print_r就能知足个人调试需求了,最近公司开始一个新项目,要大量阅读调试旧的源码,echo和var_dump开始不够用了,因而装了一下xdebug扩展,配合phpstrom使用,效率啪啪啪往上涨,后悔用晚了,下面就如何安装和使用xdebug作一个简单的说明介绍。php


一、什么是Xdebug?nginx

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),能够用来跟踪,调试和分析PHP程序的运行情况。web

二、如何下载安装Xdebug?apache

(1)下载app

官网下载地址:https://xdebug.org/download.php工具

咱们能够根据本身使用的php环境包括php版本、操做系统等选择好适配的版本扩展操作系统

 

(2)安装开放源代码

对于win环境下开发的用户来讲,通常使用的都是wamp或phpstudy这样的集成环境,咱们只须要把dll(动态连接库)文件放到你的开发环境php对于版本下的目录便可,不过通常都会有内置xdebug.dll,若是没有的话,那就须要本身动手了。debug

例如,在phpstudy中,全部dll扩展防止的目录都是在对应的php版本目录下的ext文件夹,如图所示:3d

 

对于Linux用户来讲,则要下载源码包就行编译安装了

tar -xvzf xdebug-2.1.2.tgz

cd  xdebug-2.1.2

phpize (若是phpize没有这个command,须要安装一次phpize。phpize可让php支持扩展模块)安装phpize:sudo apt-get install php5-dev

若是安装了继续进行下面命令

./configure

make

make install

cp modules/xdebug.so /usr/lib/php5/20090626+lfs将xdebug.so文件移到php5下面

三、配置php.ini

对于win的用户

profiler_开头的配置项是xdebug的输出数据相关配置

Profiler_enable很明显表示是否启用xdebug的输出数据到文件中

Prifiler_output_dir是xdebug输出数据文件的目录

Remote开头的几个配置项也注意设置好

Dll文件的位置也要确认正确无误

对于Linux的用户

配置项和内容也是大同小异,不过引入扩展文件应该是.so后缀的

四、重启apache或nginx

win下的集成环境注意启用扩展

五、咱们在根目录下写一个index.php,内容以下:

     <?php phpinfo(); ?>

访问localhost

          咱们能够看到xdebug的相关配置,特别注意的是一个port的设置

        记住端口号,咱们在下面配置phpstrom的xdebug时会用到,假如你的9000端口被其余软件应用所占用,要么关掉其余占用了9000的进程,要么重置xdebug的端口号,但建议仍是采起第二种方式。

六、配置phpstrom的xdebug

(1)打开File -> Settings

(2)在Settings中搜索xdebug,检查端口号是否与咱们刚才phpinfo()中显示的配置相同,改好注意apply

(3)添加php web application

点击Edit Configurations进入配置,下面的localhost和hezubao是我已经作好的配置

添加server站点

Name是咱们xdebug的配置名称

Server是站点配置

Start URL是站点入口

配置好后,apply


七、调试使用

往事具有,如今咱们来尝试使用一下,在上面的配置中,我将localhost的入口设为xdebug.php,如今在localhost的根目录下新增一个php文件,编辑内容以下:

 

咱们设置第七行为断点,则代码执行到第七行出会挂起暂停下来

如今咱们点击那个甲虫按钮,就开始xdebug调试了

咱们能够看到跳转的网页一直都是正在加载的状态,说明代码确实执行到某个地方挂起了

如今咱们回去看看phpstrom,左下方有输出程序代码中变量的值

下面咱们可使用Step Into的按钮单步调试咱们的程序,调试过程当中程序中的变量会不断显示在变量输出区域,以下图所示:

八、Xdebug的其余做用

很明显,有了xdebug咱们再也不须要在代码调试时对一些关键变量一个一个echo或var_dump了,并且咱们可使程序运行到断点时挂起,从而更加精确地锁定出bug的代码的位置。同时Xdebug具备追溯代码的跟踪回溯功能,这样在一些大型的程序的中,即便调用逻辑很复杂,咱们也能顺蔓摸瓜一步步到达错误发生的地方。

除此以外,咱们可使用xdebug_time_index()来显示脚本运行时间;可使用xdebug_memory_usage()来测定脚本占用内存;同时咱们还能够查询xdebug的输出日志来查询程序运行的相关信息。

相关文章
相关标签/搜索