本文的目的学会使用除了 var_dump,echo,printf 的调试方法
环境
- 系统版本:OSX 10.11.4
 - PHP 版本:7.0.5
 - Xdebug 版本:2.4.0
 - Laravel 版本:5.1.31
 - PHPStorm 版本:10.0.4
 
Xdebug 配置
本机的 Xdebug 配置文件位于 /usr/local/etc/php/7.0/conf.d/ext-xdebug.ini
打开文件添加并以下代码:
1  | [xdebug]  | 
PHPStorm 配置
打开 PHPStorm,首先配置 PHP 的使用版本与 Interpreter
Preferences => Language & Frameworks -> PHP

- PHP language level :选择 PHP 的使用版本
 - Interpreter : 配置 PHP 可执行文件的位置
 

- Name : 命名
 - PHP executable : PHP 可执行文件位置,本机使用 Homebrew 安装的 PHP,位置在
/usr/local/Cellar/php70/7.0.5/bin/php 
然后配置 PHP Debug 时的端口,将端口 9000 修改成 10000

接着修改 Run => Edit configurations,点击弹出窗口左上角加号,新增一个 PHP Web Application


- Name : 命名
 - Server : 服务器,没有跟着下图创建
 - Start URL : 要开始 Debug 的 URL
 
跟随着选项新增一个 Server

- Name : 命名
 - Host : 主机,我在本地将需要 Debug 的项目映射到 
cowcat.app上 - Port : 端口
 - Debugger : 除了 Xdebug 还有 Zend Debugger,选择 Xdebug
 
设置断点,运行Run => Debug 'Cowcat'


当浏览器运行指定 URL(就是 PHP Web Application 配置时的 Start URL) 时,出现 Xdebug 控制台,根据控制台的信息和操作进行 Debug

控制台的功能介绍如下:
- 左侧绿色三角形 : 
Resume Program,表示將继续执行,直到下一个中断点停止。 - 左侧红色方形 : 
Stop,表示中断当前程序调试。 - 上方第一个图形示 : 
Step Over,跳过当前函数。 - 上方第二个图形示 : 
Step Into,进入当前函数內部的程序(相当于观察程序一步一步执行)。 - 上方第三个图形示 : 
Force Step Into,強制进入当前函数內部的程序。 - 上方第四个图形示 : 
Step Out,跳出当前函数內部的程式。 - 上方第五个图形示 : 
Run to Cursor,定位到当前光标。 - Variables : 可以观察到所有全局变量、当前局部变量的数值
 - Watches : 可以新增变量,观察变量随着程序执行的变化。
 
