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 的设计)。