PHP调试方法

article/2025/9/28 19:33:43

为什么需要Debugger?

PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对 于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以 看出来(当然可能还需要使用一些时间函数)。那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 

什么是Xdebug?

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

如何安装Xdebug?

1. 打开http://www.xdebug.org/download.php下载相应的版本

Win: Windows binaries版本

  Linux: source

得到一个dll文件(win)或运行安装文件(linux)

2. 安装

Win:将下载的dll文件放到相应的目录中。比如我的就放D:\xampp\php\ext下面;

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下面

3. 编辑php.ini,加入下面几行:

 [Xdebug]

zend_extension=D:\xampp\php\ext\php_xdebug.dll   (Win)

zend_extension= /usr/lib/php5/20090626+lfs/xdebug.so (Linux)

 

xdebug.profiler_enable=on

xdebug.trace_output_dir="../Projects/xdebug"

xdebug.profiler_output_dir="../Projects/xdebug"

后面的目录“../Projects/xdebug”为你想要放置Xdebug输出的数据文件的目录,可自由设置。

4. 重启Apache;

5. 写一个test.php,内容为<?php phpinfo(); ?>,如果输出的内容中有看到xdebug,说明安装配置成功。如下图:

 

现在我们来从最简单的程序调试开始一步步介绍Xdebug

调试:

我们先写一个可以导致执行出错的程序,例如尝试包含一个不存在的文件。

testXdebug.php

<?php
require_once(‘abc.php’);
?>

然后通过浏览器访问,我们惊奇地发现,出错信息变成了彩色的了:

不过除了样式改变,和我们平时打印的出错信息内容没什么不同,意义不大。好,我们继续改写程序:

testXdebug2.php

<?php
testXdebug();
function testXdebug() {
        require_once('abc.php');
}
?>

输出信息:

发现了什么? Xdebug跟踪代码的执行,找到了出错的函数testXdebug()

我们把代码再写得复杂一些: 

testXdebug3.php

复制代码
<?php
testXdebug();
function testXdebug() {
       requireFile();    
}
function requireFile() {
        require_once('abc.php');
}
?>
复制代码

输出信息:

也就是说Xdebug具有类似于JavaException的“跟踪回溯”的功能,可以根据程序的执行一步步跟踪到出错的具体位置,哪怕程序中的调用很复杂,我们也可以通过这个功能来理清代码关系,迅速定位,快速排错。

其实PHP函数debug_backtrace()也有类似的功能,但是要注意debug_backtrace()函数只在PHP4.3.0之后版本及PHP5中才生效。这个函数是PHP开发团队在PHP5中新增的函数,然后又反向移植到PHP4.3中。

如何利用Xdebug测试脚本执行时间

测试某段脚本的执行时间,通常我们都需要用到microtime()函数来确定当前时间。例如PHP手册上的例子:

复制代码
<?php
/* *
* Simple function to replicate PHP 5 behaviour
*/
function microtime_float()
{
       list( $usec$sec) =  explode(" ",  microtime());
return (( float) $usec + ( float) $sec);
}
$time_start = microtime_float();
//  Sleep for a while
usleep(100);
$time_end = microtime_float();
$time =  $time_end -  $time_start;
echo "Did nothing in  $time seconds\n";
?>
复制代码

但是microtime()返回的值是微秒数及绝对时间戳(例如“0.03520000 1153122275”),没有可读性。所以如上程序,我们需要另外写一个函数microtime_float(),来将两者相加。

Xdebug自带了一个函数xdebug_time_index()来显示时间。

如何测定脚本占用的内存?

有时候我们想知道程序执行到某个特定阶段时到底占用了多大内存,为此PHP提供了函数memory_get_usage()。这个函数只有当PHP编译时使用了-enable-memory-limit参数时才有效。 

Xdebug同样提供了一个函数xdebug_memory_usage()来实现这样的功能,另外xdebug还提供了一个xdebug_peak_memory_usage()函数来查看内存占用的峰值。

如何检测代码中的不足?

有时候代码没有明显的编写错误,没有显示任何错误信息(如errorwarningnotice等),但是这不表明代码就是正确无误的。有时候可能某段代码执行时间过长,占用内存过多以致于影响整个系统的效率,我们没有办法直接看出来是哪部份代码出了问题。这时候我们希望把代码的每个阶段的运行情况都监控起来,写到日志文件中去,运行一段时间后再进行分析,找到问题所在。

回忆一下,之前我们编辑php.ini文件

加入

[Xdebug]

xdebug.profiler_enable=on

xdebug.trace_output_dir="I:\Projects\xdebug"

xdebug.profiler_output_dir="I:\Projects\xdebug"

这几行,目的就在于把执行情况的分析文件写入到”../Projects/xdebug”目录中去(你可以替换成任何你想设定的目录)。如果你执行某段程序后,再打开相应的目录,可以发现生成了一堆文件,例如cachegrind.out.1169585776这种格式命名的文件。这些就是Xdebug生成的分析文件。用编辑器打开你可以看到很多程序运行的相关细节信息,

最后:

Xdebug提供了各种自带的函数,并对已有的某些PHP函数进行覆写,可以方便地用于调试排错;Xdebug还可以跟踪程序的运行,通过对日志文件的分析,我们可以迅速找到程序运行的瓶颈所在,提高程序效率,从而提高整个系统的性能


安装xdebug

下载xdebug

请下载对应PHP版本的xdebug

1
2
3
wget wget http: //xdebug .org /files/xdebug-2 .2.1.tgz
tar xzvf xdebug-2.2.1.tgz
cd xdebug-2.2.1

安装xdeubg

1
2
3
4
/usr/local/webserver/php/bin/phpize
. /configure -- enable -xdebug --with-php-config= /usr/local/webserver/php/bin/php-config
make
cp modules /xdebug .so /usr/local/webserver/php/lib/php/extensions/

修改 php.ini ,vi /usr/local/webserver/php/etc/php.ini

在最底下加入以下内容:

1
2
3
4
5
6
7
8
[XDEBUG]
zend_extension= "/usr/local/webserver/php/lib/php/extensions/xdebug.so"
xdebug.remote_enable=on
; 此地址为IDE所在IP
xdebug.remote_host=xxx.xxx.xxx.xxx
xdebug.remote_port=9000
; 可以是任意Key,这里设定为PHPSTORM
xdebug.idekey= "PHPSTORM"

配置IDE

我是用的IDE是PHPStorm,所以以下配置均根据PHPStorm进行,其他如Netbean和Eclipce类似

在Settings里面,选择PHP -> Debug,在xdebug里填入刚才设定的端口,确定即可。

phpstorm-xdebug

设置好后,点击 Run -> Start Listen PHP Debug Connections 开启监听即可。

配置浏览器

Firefox浏览器可以安装 easy Xdebug ,Chrome上安装 Xdebug helper 。安装好后,在IDE Key 上填上 PHPSTORM (需要和配置一样)即可。

xdebug-key

开始Debug

设置完成后,在PHPStorm里添加相应的断点,然后用刚配置好的浏览器访问相应页面,首次打开PHPStorm会提示是否接收来自PHP所在服务器的连接。如下图,Debugger窗口已经出现了调试信息:

debug-information



http://chatgpt.dhexx.cn/article/HPwGobUv.shtml

相关文章

VScode + PHPstudy + PHP Debug 调试PHP代码

找了好多文章写个流程笔记记录下&#xff0c;整了几天终于搞定了&#xff08;毕竟我是小白萌新&#xff09;。 下载小皮面板 https://www.xp.cn/download.html下载vscode https://code.visualstudio.com/下载everything https://www.voidtools.com/zh-cn/ 一、小皮面板点击配…

PHP笔记-使用PHPStorm断点调试php代码

最近在撸php&#xff0c;书上都不交断点调试&#xff0c;这尼玛坑得很&#xff0c;没有断点的开发程序&#xff0c;就是坑&#xff0c;通过查阅和摸索&#xff0c;调试成功&#xff0c;在此记录下&#xff1a; php版本&#xff1a;7.1 phpstorm版本&#xff1a;2020.3 首先运…

phpstorm+xdebug/php项目调试

前提&#xff1a;项目使用xampp集成 一、下载xdebug&#xff0c;当到xampp/php/exp目录下 二、配置php.ini [Xdebug] zend_extension"D:/xampp/php/ext/php_xdebug.dll" xdebug.collect_paramsOn xdebug.collect_returnOn xdebug.auto_traceOn xdebug.trace_output_…

php调试排错技巧大全

做php开发时间不短了&#xff0c;在这里总结下平时常用的调试方法&#xff0c;希望对大家有所帮助。 1 代码调试 1.1 打印输出 使用echo、var_dump 、print_r等方法在需要调试地方进行打印输出&#xff0c;通过输出特定变量的值可以判断程序执行是否正确。 1.2 使用debug_b…

VSCode+wampserver搭建PHP调试环境

1.下载vscode和wampserver Vscode下载地址: https://code.visualstudio.com/ Wampserver下载地址: https://www.wampserver.com/en/#download-wrapper 2.测试wampserver是否安装成功 双击打开WAMP&#xff0c;会在右下角的任务栏看到它的图标&#xff0c;如果是绿色代表OK, 其…

vscode使用xdebug3进行PHP调试

使用xdebug&#xff1a; 下载 Xdebug: Downloads 或在这里输入PHP的信息给出推荐的版本&#xff1a;Xdebug: Support — Tailored Installation Instructions 配置&#xff1a; 打开php.ini文件&#xff0c;在文件最后添加&#xff1a;&#xff08;3.0的配置项有些改了&…

PHP 调试 - Xdebug

PHP 调试指南.pdf PHP 程序员的调试技术 根据要调试的对象的不同&#xff0c;采取的方法也不一样&#xff1a; 调试 web 应用&#xff1a;对于 web 应用&#xff0c;可以在浏览器中安装插件&#xff0c;或者在 IDE 中设置&#xff0c;下面的设置二选一即可。 Get/Post 请求…

php程序怎么调试,你是怎么调试PHP代码的

1.echo 这是最简单的输出数据调试方法&#xff0c;一般用来输出变量值&#xff0c;或者你不确定程序执行到了哪个分支的情况下使用。 $var 7; if (0 > $var) { // do something echo 1; }elseif (0 < $var && 5 > $var) { // do something echo 2; }elseif (…

vscode-PHP调试工具测试

[VS CODE] PHP调试环境配置步骤 STEP1 安装配置VS-Code-PHPSTEP2 安装配置XDebugSTEP3 配置VSCode调试器扩展 Wampserver32 整合部署环境&#xff0c;集成Apache服务器 MySQL PHP一体的服务器配置环境 Wampserver版本: 3.0.6 32bit PHP版本: PHP 5.6.25 XDebug Xdebug is…

vscode +phpstudy 搭建php调试环境

在进行php的学习过程中&#xff0c;需要结合具体的实操才能让自己更加深刻的理解代码&#xff0c;所以需要在自己本机搭建一个php的调试环境&#xff0c;进行调试。 这里用到的比较简单快捷的vs code加phpsutfy的方法在本地搭建调试环境。 需要用到的软件 vscode phpstudy v…

PHP调试输出的方法

PHP程序一旦出错调试是个问题&#xff0c;一般常规方法当然是用echo()函数直接在页面上输出&#xff0c;来查看变量的内容。但是这样很麻烦有些地方未必能显示调试内容。所以有大神想出办法用Google Chrome浏览器“审查元素”或者“检查”下的Console也就是控制台来显示PHP等服…

PHP调试简单方法

作为一个php新手&#xff0c;在遇到php语句错误的时候无所适从啊&#xff0c;因为没有用IDE不知道在哪里看错误信息啊&#xff0c;现在找到了一个不用修改php.ini的简单方法&#xff0c;用于调试错误&#xff0c;分享一下。 一开始测试php页面的时候发现内容木有显示&#xff0…

Visual Studio Code搭建PHP调试环境

使用Visual Studio Code搭建PHP调试环境 一.需要安装的软件 Visual Studio Code安装可以参照博文&#xff1a; https://blog.csdn.net/qq_34195507/article/details/94558862 WAMP(包括Apache、MySQL、PHP、以及最关键的XDebug) wampserver安装可以参照博文&#xff1a; …

Windows下搭建PHP调试环境(phpstudy+VScode)

Windows下搭建PHP调试环境&#xff08;phpstudyVScode&#xff09; 0x00 问题背景0x01 配套环境0x02 php Xdebug简介官方介绍&#xff1a;Xdebug扩展启用 0x03 php.ini配置0x04 vscode配置VScode下载安装VScode调试配置1. PHP Debug2. launch.json3. PHP SERVER创建调试4.FireF…

PHP开发程序调试

php程序如何调试&#xff1f; 一、PHP自带的调试功能 1、修改php.ini &#xff08;1&#xff09;开发环境 需要打开报错输出显示,方便开发者调试。 display_errors On &#xff08;2&#xff09;生产环境 不能直接将错误输出&#xff0c;而是记入日志&#xff0c;以免透…

IntelliJ IDEA 2019 配置 PHP 调试 xdebug 并进行测试

&#x1f4d6;摘要 今天分享下 —— IntelliJ IDEA 2019 配置 PHP 调试 xdebug 的一些基本知识&#xff0c;欢迎关注&#xff01; &#x1f302;分享 先创建一个php项目&#xff1a;传送门------>IntelliJ IDEA 2019 配置PHP开发环境 和 IntelliJ IDEA 2019 创建php项目 。 …

PHP 调试 - 方式

之前学 Java 的时候&#xff0c;一直使用 IDE 的 console 控制台进行调试。后来搞 PHP 后&#xff0c;习惯在代码里面 echo 和 exit&#xff0c;然后在浏览器刷新看效果&#xff0c;把单步调试、变量值查看等常用的调试方式给忘了。其实通过 IDE 集成的控制台进行调试更高效。 …

使用xdebug调试php详细教程 原创

下载xdebug扩展 将phpinfo()中的信息全部复制到Xdebug中的文本框中&#xff0c;如下图所示&#xff1a;点击“Analyse my phpinfo() output”按钮。 跳转到如下图所示页面&#xff0c;会对本机中的php进行分析&#xff0c;点击“Download php_xdebug-2.7.2-7.2-vc15-x86_64.dll…

Xdebug安装与使用

Xdebug安装与使用 为什么需要Debugger? 很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等&#xff0c;其实对 于有较丰富开发经验的程序员来说这些也已经足够了&#xff0c;他们往往可以在程序执行的过程中&#xff0c;通过输出特定变量的值可以判断程序执行是否…

Git详细教程(五):查看分支、创建分支、合并分支

一、查看分支 查看的git命令如下&#xff1a; git branch 列出本地已经存在的分支&#xff0c;并且当前分支会用*标记 git branch -r 查看远程版本库的分支列表 git branch -a 查看所有分支列表&#xff08;包括本地和远程&#xff0c;remotes/开头的表示远程分支&#xff09…