🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
* **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