Xdebug 做为 PHP 调试工具,提供了丰富的调试函数和配置,能够直观的看到 PHP 源代码的步进和性能数据,以便优化PHP代码。php
使用 phpstorm + xdebug 来调试 php 程序是借助强大的IDE监听功能, 更方便的调试程序. 提升咱们的编码效率, 当然 var_dump, print_r 等函数也能提供相应的功能, 可是自动化的工具更可以事半功倍. 下面我根据本身的使用介绍下如何进行调试和配置. web
, 一种方式是用外部设置的 session, 另一种是在 phpstorm 中配置页面入口而后使用内置的监听来访问, 原理相同, 下面咱们从原理开始讲解chrome
这里使用了最小化配置, 对于 profile 等功能没有配置segmentfault
[xdebug] zend_extension="/usr/local/opt/php70-xdebug/xdebug.so" xdebug.remote_enable=1 # 启用远程调试 xdebug.remote_connect_back=1 # 忽略 remote_host 配置, 不关注主机配置, 开发者使用最舒服 xdebug.remote_port=9050 # 监听端口
注意 这里监听端口默认是 9000 , 和 php 默认监听重复, 注意尽可能不用使用 9000, 以避免出现不生效的状况.服务器
这里是让 phpstorm 经过监听端口的方式获取到xdebug 断点传送过来的数据cookie
咱们这里监听的是 9500 端口, 和 xdebug 配置监听数据端口一致session
切换 “开始监听PHP调试链接” 按钮。php7
点击行号右侧空白, 设置断点框架
debug session 的工具的目的是设置一个cookie, 让每次发送数据的时候都会携带这个 cookie, 从而识别监听.phpstorm
安装 chrome 扩展 Xdebug helper
已经设置了cookie, Key 是 XDEBUG_SESSION
, 值是 PHPSTORM
, 我认为这里的值可有可无, 对于 phpstorm 来讲, 是可以监控到的.
这里咱们在断点位置能够看到输出的内容项目
这里的另一种方式的服务器配置方式和流程彻底一致, 就是第四步和第五步有所不一样, 实现的原理是在phpstorm中设置运行的服务器, 而后经过 debug 模式自动设置 XDEBUG_SESSION
, 而且自动开启监听.
例如我这里的本地域名是 l.dailian.sour-lemon.com
, 咱们须要配置一个本地服务器来打开这个页面, 咱们首先配置一台服务器.
注意 这里的配置的域名是你本地已经配置好开发环境的域名, 端口号是 本地开发所使用的端口, 我这里是 l.dailian.sour-lemon.com
和 80
咱们这里建立的调试页面的类型是 PHP Web Application
, 服务器选择的是刚才已经创建好的服务器
这样运行的状况下上面的 2.2) 开启phpstorm 数据监听
步骤能够忽略掉, 这里不须要开启这个监听.
点击 debug 按钮, 这里会自动打开一个页面而且传递一个惟一的ID(多是进程 ID)做为 debug 值
打开的url地址是: http://l.dailian.sour-lemon.com/?XDEBUG_SESSION_START=13608
, 这里的数值是会变更的.
打开 debug 面板, 会看到相对应的监听 idekey, 这里和上一步设置的key是一致的, 一样也和 cookie 中的设置的 XDEBUG_SESSION
值一致
第一次运行的时候能够经过 phpstorm 自带的工具来检查配置的兼容性.
Run > Web Server Debug Validation
左侧
绿色三角形 : Resume Program
,表示將继续执行,直到下一个中断点中止。
红色方形 : Stop
,表示中断当前程序调试。
上方
第一个图形示 : Step Over
,跳过当前函数。
第二个图形示 : Step Into
,进入当前函数內部的程序(至关于观察程序一步一步执行)。
第三个图形示 : Force Step Into
,強制进入当前函数內部的程序。
第四个图形示 : Step Out
,跳出当前函数內部的程式。
第五个图形示 : Run to Cursor
,定位到当前光标。
框架说明
Frames : 加载的文件列表
Variables : 能够观察到全部全局变量、当前局部变量的数值
Watches : 能够新增变量,观察变量随着程序执行的变化。