设为首页 收藏本站
查看: 593|回复: 0

[经验分享] PHP 调试技术总结

[复制链接]

尚未签到

发表于 2017-3-23 10:24:54 | 显示全部楼层 |阅读模式
  1: 内置 API 输出调试
我们除了用echo,print,print_r, var_dump, var_export
1-1. debug_zval_dump 输出结果跟 var_dump 类似,唯一增加的一个值是 refcount,就是记录一个变量被引用了多少次,这是 php 的 copy on write (写时复制) 的机制的一个重要特点。
1-2. debug_print_backtrace 可以让我们查看整个程序的调用栈,用来查看瞬间函数调用栈,方便在出错时查看执行上下文.
2:错误控制和日志记录调试
2-1. Php.ini 配置中,跟错误相关的选项主要:error_reporting、display_errors、log_errors、error_log 等几个,这些选项在一般语法级别的调试是很有帮助的。
3.错误抛出和处理
3-1. 错误抛出和处理主要是说我们在程序中,能够自己触发错误,或者是自己截获处理错误,类似于面向对象编程里的异常处理 throw 抛出异常,catch 截获异常一个思路。
trigger_error、set_error_handler、set_exception_handler 这三个 api 主要就是处理错误抛出和处理内置函数。
4.FirePHP 调试
4-1.FirePHP 是一个附加在 firebug 上面的插件,用来调试 PHP,操作过程很简单。在 PHP 端使用 FirePHP
提供的 PHP 日志记录类库来输出调试信息, 在浏览器端使用 Firebug + FirePHP 来接收查看输出的调试信
息,这些调试信息会直接附加在返回的 HTTP 头信息里, 这些信息不会被浏览器直接显示, 只会在 firephp 获
取显示,有效的达到了调试和页面显示都不冲突的问题。(必须使用 firefox 浏览器)
5.IDE 调试
5-1.Vim,Zend Studio,Eclipse,NetBeans中调试功能
6.PHP 性能调试技术
6-1. 基本上使用 microtime() 这种计算时间的函数就能够来监测时间,如果使用 time() 之类的函数,统计
时间粒度就太粗了。
7.使用 Xdebug 进行性能分析
7-1 使用简单的时间统计,第一个需要在代码里增加时间点监控,比较麻烦,有时候我们需要看一段代码里那些函数调用是比较消耗时间的,单纯的使用时间控制就比较麻烦,这个时候,就可以使用 Xdebug 这种性
能分析工具了。
8.APD(Advanced PHP Debugger)
8-1.APD 是 Advanced PHP Debugger,即高级 PHP 调试器。是用来给 PHP 代码提供规划与纠错的能力,
以及提供了显示整个堆栈追踪的能力。APD 支持交互式纠错,但默认是将数据写入跟踪文件。它还提供了
基于事件的日志, 因此不同级别的信息 (包括函数调用, 参数传递,计时等)可以对个别的脚本打开或关闭。
9.使用 Xhprof 进行性能分析
一般情况下来说,大家都是使用 Xdebug,但是 Xdebug 太麻烦,需要各种配置,还有复杂的查看生成
的数据文件,并且 Xdebug 无法再线上使用,因为特别占用 CPU 资源,所以就诞生了 Xhprof。Xhprof 是
Facebook 开源出来的一个性能测试工具,它比较轻量级,它运行更轻便快速,输出的数据更容易查看。
10.PHP 单元测试技术
PHPUnit 是一个轻量级的 PHP 测试框架。它是在 PHP5 下面对 JUnit3 系列版本的完整移植,是 xUnit
测试框架家族的一员(它们都基于模式先锋 Kent Beck 的设计)。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-353986-1-1.html 上篇帖子: php __call and __callStatic 下篇帖子: php.ini 配置详细选项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表