根据要调试的对象的不一样,采起的方法也不同:html
XDEBUG_SESSION_START=session_name
,使 Xdebug 知道这个请求应该链接 IDE 进行调试。通常由 IDE 提供这个功能。经过 Xdebug,能够在 IDE 的终端进行调试,能够单步调试、查看调用栈和变量值。此外,Xdebug 还能够分析性能(XHProf 也能够分析性能)。程序员
Xdebug 支持的功能有:web
下载地址:https://xdebug.org/download.phpchrome
我用的 PHP 是 7.2,64位,非线程安全的版本,因此下载 PHP 7.2 VC15 (64 bit) 这个版本的 Xdebug。segmentfault
下载完成后,将其放入 PHP 安装目录下的 ext 目录。而后修改 php.ini
文件(或者专门创建独立的 ini 配置文件给 Xdebug 用)添加以下内容:数组
[Xdebug]
zend_extension="c:/php/ext/php_xdebug-2.1.0-5.3-vc6.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001
经过命令行执行 php -v
,输出中包含 Xdebug 的版本信息,则表示安装成功:浏览器
C:\Users\Administrator>php -v
PHP 7.2.7 (cli) (built: Jun 19 2018 23:13:48) ( NTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.0alpha1, Copyright (c) 2002-2018, by Derick Rethans
注意,[Xdebug]
在 Linux 须要区分大小写。安全
Xdebug 是 C/S 结构,Client 是 PHP 中安装的 Xdebug,Server 是 IDE 中安装的插件。PHP 脚本运行时,Xdebug 能够向 IDE 报告运行状态,并将调试信息发送给 IDE。服务器
Xdebug 有大量的配置参数能够设置,完整设置能够参考 这里,经常使用设置以下:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;远程调试相关设置
;用于验证服务器,只有 Xdebug 的服务器与客户端的 idekey 匹配时才会发送调试消息
xdebug.idekey="PhpStorm"
;开启远程调试
xdebug.remote_enable=on
;自动启动远程调试,对于不是 web 应用的 PHP 程序来讲,必须开启
xdebug.remote_autostart=on
xdebug.remote_mode="req"
xdebug.remote_log="d://lnmp/log/phpxdebug.log"
xdebug.remote_handler="dbgp"
;远端 Xdebug 服务器的 IP 地址
xdebug.remote_host=localhost
;远端 Xdebug 服务器的端口,在 IDE 中设置
xdebug.remote_port=9001
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;trace 代码跟踪相关设置
;是否容许Xdebug跟踪函数调用,跟踪信息以文件形式存储,默认值为0。用于调试 auto_prepend_file 中的代码
xdebug.auto_trace = 1
;代码跟踪日志文件位置,默认值为/tmp。须要先新建这个目录,并设置读写权限
xdebug.trace_output_dir=d://lnmp/log/php
;函数调用跟踪信息输出文件命名规则,默认为 trace.%c
xdebug.trace_output_name=trace.%c.%p
;是否容许 Xdebug 跟踪函数参数,默认值为0
xdebug.collect_params = 4
xdebug.collect_includes = On
;是否容许 Xdebug 跟踪函数返回值,默认值为0
xdebug.collect_return = On
xdebug.show_mem_delta = On
;设置数组或者对象显示的最大层级,默认是3
xdebug.var_display_max_depth = 2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;profile 性能探查相关设置
;打开性能分析器,默认值为0
xdebug.profiler_enable=1
;性能分析文件的存放位置,默认值为/tmp。须要先新建这个目录,并设置读写权限
xdebug.profiler_output_dir=d://lnmp/log/php
;性能分析文件的命名规则,默认值为cachegrind.out.%p
xdebug.profiler_output_name=profiler.%c.%p
PHP 中的 Xdebug 配置完成后,接下来须要在 IDE 中设置 Xdebug 服务器,经过监听端口来获取代码运行状态。
设置的路径:打开 IDE 后,依次选择 File | Settings | Languages & Frameworks | PHP,选择 PHP 版本和脚本位置便可。
设置的路径:打开 IDE 后,依次选择 File | Settings | Languages & Frameworks | PHP | Debug,能够看到 Debug 相关设置。最重要的是端口号,默认是 9000,但这会跟 PHP-FPM 冲突,因此这里改成 9001。同时,须要在 php.ini
配置文件中经过 xdebug.remote_port=9001
告诉 Xdebug 客户端,服务器监听的端口号是 9001。
当前设置页面的参考手册在 这里。
Debugging PHP Web Applications with Run Debug Configurations
PhpStorm 中能够经过 Run | Edit Configuration 进入 Run/Debug Configuration 调试设置页面,在这里添加测试项目后,点击调试按钮后,IDE 会自动打开浏览器,输好网址并添加这个字符串 XDEBUG_SESSION_START=session_name
。
字段 | 描述 |
---|---|
IDE key | 指定代理服务器的名称以标识 IDE 中的链接。这应该是当前活动的 php.ini 配置文件中 xdebug.idekey 设置的值。 |
Host | 指定 Xdebug 代理服务器所在的主机。 |
Port | 指定在代理调试会话期间 PhpStorm 将侦听的端口。 |
Xdebug 和 IDE 配置完成后,就能够调试非 web 应用了。对于须要在浏览器中调试的 web 应用,还须要在浏览器中安装插件,Chrome 直接安装 Xdebug Helper 就好了,其余浏览器能够参考 这里。
插件安装好后,打开 PhpStorm 并监听 debug 链接(Run | Start Linstening for PHP Debug Connections,也就是调试工具栏中的小电话)。而后点击刚安装好的插件,选择 debugging、profiling 或 tracing 会话,在浏览器端初始化一个链接。