手机版

php Xdebug安装使用详解

时间:2021-11-18 来源:互联网 编辑:宝哥软件园 浏览:

为什么需要调试器?很多PHP程序员使用echo、print_r()、var_dump()、printf()等进行调试。其实这些对于开发经验丰富的程序员来说已经足够了。他们往往可以在程序执行过程中通过输出特定变量的值来判断程序是否执行正确,甚至可以看出效率(当然可能需要一些时间函数)。那么为什么我们需要一个专门的调试程序来监控我们程序的运行呢?这个问题的答案不妨稍后揭晓。什么是Xdebug?XDebug是一个PHP程序的开源调试器,可以用来跟踪、调试和分析PHP程序的运行状态。如何安装Xdebug? 1.打开http://www.xdebug.org/download.php并下载相应版本的Win:Windows二进制文件版本Linux:source获取dll文件(Win)或运行安装文件(Linux)。2.install win:将下载的dll文件放在相应的目录中。比如我把我的放在D:\xampp\php\ext下;Linux:执行安装文件tar-xvzf xdebug-2 . 1 . 2 . tgz CD xdebug-2 . 1 . 2 phpize(如果phpize没有此命令,则需要安装一次phpize。Phpize可以让php支持扩展模块)Install phpize : sudo apt-get Install PHP 5-dev。如果已安装,请继续执行以下命令。/configuremakemake安装将具有此接口

CP modules/xdebug.so/usr/lib/PHP 5/20090626 lfs将xdebug . so文件移动到php5.3 .编辑php.ini并添加以下行:【xdebug】Zend _ extension=d : \ xampp \ PHP \ ext \ PHP _ xdebug . dll(Win)Zend _ extension=/usr/lib/PHP 5/20090626 lfs/xdebug . so(Linux)xdebug . profiler _ enable=on xdebug。/项目/目录"./Projects/Xdebug“在xdebug' xdebug后面。profiler _ output _ dir='./projects/xdebug '是您想要放置xdebug输出的数据文件的目录,可以自由设置。4.重启Apache;5.写一个test.php,内容是?PHP phpinfo();如果在输出中看到xdebug,则安装配置成功。如下所示:

现在让我们从最简单的程序调试开始一步步介绍Xdebug。调试:让我们编写一个可能导致执行错误的程序,例如,尝试包含一个不存在的文件。testXdebug.php?PHP require _ once(' ABC . PHP ');然后,通过浏览器访问,我们惊讶地发现错误信息变成了彩色:

但是除了样式的变化,和我们平时打印的错误信息没有什么区别,意义不大。好,让我们继续重写程序:testXdebug2.php?phptestXdebug();functiontestXdebug(){ require _ once(' ABC . PHP ');}?产出信息:

你发现了什么?Xdebug跟踪了代码的执行,并找到了错误函数testXdebug()。让我们将代码变得更加复杂:testXdebug3.php将代码复制如下:phptestXdebug();函数testXdebug(){ require file();}函数require file(){ require _ once(' ABC . PHP ');}?产出信息:

也就是说,Xdebug具有类似于Java的Exception的“回溯”功能,可以根据程序的执行情况,一步一步地追踪具体的错误位置。即使程序中的调用比较复杂,我们也可以用这个函数来理清代码关系,快速定位,快速排除故障。其实PHP函数debug_backtrace()也有类似的功能,但是需要注意的是,debug_backtrace()函数只在PHP4.3.0和PHP5之后生效。这个函数是PHP开发团队在PHP5中添加的,然后移植回PHP4.3,如何使用Xdebug测试一个脚本的执行时间,通常我们需要使用microtime()函数来确定当前时间。比如PHP手册里的例子:复制代码如下:php/***复制PHP 5行为的简单函数*/function microtime _ float(){ list($ usec,$sec)=explode(',microtime());return((float)$ usec(float)$ sec);} $ time _ start=micro time _ float();//睡一会儿觉(100);$ time _ end=micro time _ float();$ time=$ time _ end-$ time _ start;echo“在$time秒内没有执行任何操作\ n”;但是microtime()返回的值是微秒数和绝对时间戳(例如“0.03520000 115312275”),不可读。因此,与上面的过程一样,我们需要编写另一个函数microtime_float()来添加这两个函数。Xdebug附带了一个函数xdbug _ time _ index()来显示时间。如何衡量脚本占用的内存?有时候我们想知道程序到达某个阶段占用了多少内存,所以PHP提供了函数memory_get_usage()。该函数仅在用-enable-memory-limit参数编译PHP时有效。Xdebug还提供了函数xdbug _ memory _ usage()来实现这个功能,xdbug还提供了函数xdbug _ peak _ memory _ usage()来检查内存使用的峰值。如何发现代码中的缺陷?有时没有明显的编码错误,也没有错误消息(如错误、警告、通知等)。),但这并不意味着代码正确。有时候一段代码执行时间太长,占用内存太多,影响整个系统的效率。我们无法直接看到代码的哪个部分出错了。这个时候,我们希望监控代码各个阶段的运行情况,写入日志文件,运行一段时间后进行分析,找出问题所在。回想一下,我们编辑了php.ini文件,添加了[xdebug]xdebug . profiler _ enable=on xdebug . trace _ output _ dir=' I : \ project \ xdebug ' xdebug . profiler _ output _ dir=' I : \ project \ xdebug '的目的是将实现情况的分析文件写入目录"./Projects/xdebug“(您可以用您想要设置的任何目录替换它)。如果你在执行某个程序后打开相应的目录,你会发现已经生成了一堆文件,比如以cachegrind.out格式命名的文件。1169585776这些是Xdebug生成的分析文件。用编辑器打开程序,可以看到很多关于程序运行的详细信息。最后,Xdebug提供了各种自成一体的函数,并覆盖了一些现有的PHP函数,可以方便地用于调试和调试。Xdebug还可以跟踪程序的运行。通过对日志文件的分析,可以快速发现程序运行的瓶颈,提高程序的运行效率,从而提高整个系统的性能。

版权声明:php Xdebug安装使用详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。