* **bug是任何语言都无法避免的问题,对于比较有经验的php程序员来讲,通常使用 echo,var_dump 可以解决大部分bug,但是当代码环境较为复杂的情况下这么做效率就非常低下了(比如学习一个框架的源码),断点调试就非常好的解决了这个问题。在你习惯使用断点之后,你会发现之前debug的方式是多么的浪费时间和精力。**
* **本文将笔者使用php断点调试的方法和技巧做了深度的总结和归纳,对于php新手来说有相当参考价值。**
>[danger]
> **这里假设大家已经参照 “调试环境的搭建” 章节搭建好了环境,如果没有,请先搭建调试环境。**
**环境搭建好以后,用phpstrom打开项目**
**如下图,在index.php里第4行位置设置断点,确保按钮1的状态如图,即为打开状态**
**浏览器访问项目,会得到此图一样的效果**
![](https://box.kancloud.cn/d7f8d29e7cbdfd21943916975f1fd3b9_686x780.png)
**先介绍几常用个按钮的作用(图中标注标号的)**
1. 按钮1是断点模式的开关,打开以后断点才会起作用
2. 按钮2是中断请求,即请求停留在一个断点的时候,点击会中断整个http请求
3. 按钮3是当前栈执行一步,不进入函数内执行。即代码向下执行一步,如果下一步是调用函数,它不会进入函数里显示执行过程,而是直接把函数执行的结果返回来
4. 按钮4是区别按钮3,当前栈执行一步,同时进入函数内执行。即代码向下执行一步,如果下一步是调用函数,它会进入函数里显示执行过程,方便查看函数里的执行过程
5. 按钮5和按钮4几乎一样,反正目前我没看出区别,用起来感觉一样
6. 按钮6是在函数里执行的时候,跳过此函数或者方法的剩余部分,反回到上一层的调用栈
7. 按钮7是动态断点,即鼠标光标定位在哪一行,点击此按钮的时候回自动在那一行断点
8. 按钮8是执行到下一个断点位置停留下来
9. 按钮9同按钮2一样
10. 按钮10是查看当前项目一个设置了哪些断点
11. 按钮11是当前请求所有断点忽略,通常配合按钮8一起使用,即直接执行完所有代码
**右下的大框框里显示的是当前堆栈的变量,可以方便的查看各个变量的值,这就是比起 echo 最方便的地方**
**这样通过追踪堆栈,查看代码执行过程,我们可以方便的找到变量的变化过程,找到bug的源头**
**如图**
![](https://box.kancloud.cn/f1975f19b20f4bf38242de3a880dfbf9_1298x834.png)
## **其他参考**
如何愉快的在PhpStorm中进行Xdebug断点调试:https://blog.csdn.net/RobotYang123/article/details/80370030
如何愉快的在PhpStorm中进行Xdebug断点调试:https://segmentfault.com/a/1190000014942730
PHP xdebug 模块下载:https://xdebug.org/download.php
PHP xdebug 模块检测和下载:https://xdebug.org/wizard.php
Xdebug helper 浏览器插件:https://www.crx4chrome.com/crx/1716/
PhpStorm 本地断点调试:https://blog.csdn.net/qq_21386275/article/details/78109498
- 序言
- 图片预览
- 诠释高效开发
- 提问的智慧
- GIT命令参考
- 安装composer
- 断点调试技巧
- 调试环境的搭建
- 调试工具的使用及技巧
- 前置基础-TP底层讲解
- 理解编程的抽象
- 耦合与解耦
- 自动加载
- 反射类
- 控制反转(IOC)和依赖注入(DI)
- iThink 自定义依赖注入的实现
- 常用设计模式
- SPL标准库
- 行为-钩子-插件
- AOP-面向切面
- RBAC和Auth类的本质
- 安装iThink
- 环境要求
- 代码下载与环境配置
- 执行安装
- 体验测试模块
- apache配置
- nginx配置
- 系统架构详解
- 目录详解
- 执行流程图
- 数据字典
- RBAC 权限管理架构
- 系统分层详解
- 控制器层(controller)
- 逻辑层(logic)
- 视图层(view)
- 模型层(model)
- 服务层(service)
- 应用包架构详解
- 目录结构
- 开发规范
- 数据库规范
- 编码规范
- 功能设计原则与规范
- 后台功能详解
- 基础功能
- RBAC + Auth 权限机制
- 应用化功能机制
- 代码生成器(重要)
- 应用骨架代码生成
- 数据表 CURD 代码生成
- 页面构造器(重要)
- 通用元素构造器
- 表格元素构造器
- 搜索表单元素构造器
- 表单元素构造
- 闭包事物构造器
- 应用的开发
- 函数参考