php代码调试

前言

在程序的开发阶段,必须涉及到程序的调试,调试可以减少代码中隐藏的隐患。

PHP代码调试

对于简单的php代码,使用常用的输出函数即可完成调试。常用的函数有echo、print、print_r、die、var_dump等,echo和var_dump最常用。

自定义debug函数

function debug(){
    $numargs=func_num_args();//实参个数
    $arg_list=func_get_args();//获取对应的参数
    for($i=0;$i<$numargs;$i++){
        echo "第{$i}个变量的值为:",$arg_list[$i],PHP_EOL;
    }
    echo  "当前的文件名称为:",__FILE__,PHP_EOL;
}

var_dump函数
有的情况,需要知道变量的类型,如果变量是一个矢量类型的数据(数组对象等),可以使用var_dump函数。
==注意:除了以上常见的函数和语法外,还有debug_zval_dump函数。这个函数输出结果和var_dump类似,唯一不同的就是增加了一个refcount,记录变量的调用次数。==

function console_log( $data ){
  echo '<script>';
  echo 'console.log('. json_encode( $data ) .')';
  echo '</script>';
}

通过xdebug进行调试

  • xdebug的下载
    xdebug版本检测,有浏览器打开 https://xdebug.org/download.php地址,显示如下页面:
    image
    单机 installation instructions,将phpinfo信息拷贝到文本框中,检测所需要的xdebug版本,结果如下:
    image
    根据检测结果进行xdebug配置;
[xdebug]
zend_extension = D:\wnmp\php\php-5.6\ext\php_xdebug-2.4.0-5.6-vc11-nts.dll
  • xdebug主要设置

自动打开“监测函数调用过程”的功模。该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出。此配置项的默认值为off
xdebug.auto_trace=on

xdebug.collect_params=on打开收集“函数参数”的功能。将函数调用的参数值列入函数过程调用的监测信息中。此配置项的默认值为off
xdebug.collect_params=on

打开收集“函数返回值”的功能。将函数的返回值列入函数过程调用的监测信息中。此配置项的默认值为off
xdebug.collect_return=on

设定函数调用监测信息的输出文件的路径
xdebug.trace_output_dir=D:\wnmp\tmp\xdebug

打开效能监测器
xdebug.profiler_enable=on

文件名称
xdebug.profiler_output_name =cachegrind.out.%t.%p

设定效能监测信息输出文件的路径
xdebug.profiler_output_dir=D:\wnmp\tmp\xdebug

允许调试的客户端IP
xdebug.remote_host=127.0.0.1

远程调试的端口(默认9000)
xdebug.remote_port=9000

调试插件dbgp
xdebug.remote_handler=dbgp


  • phpstorm 与xdebug配置

xdebug.idekey=”PHPSTORM”
首先配置PHP解释器的路径 File->settings>PHP
搜索框中输入PHP,出现如下界面:
image

填写服务器端的相关信息 File>Settings>PHP>Servers
image

配置xdeub选项File>Settings>PHP>Debug
image
- PHPSTORM断点调试,打开监视器
image
打开之后如下:
image
- phpstorm设置断点,并调试,如下图:
image
- xdebug分析器
xdebug生成的结果是cacheGrind格式,所以要使用兼容CacheGrind应用来查看xdebug结果,常用的软件如下:
在Windows中常用WincacheGrind;
在Linux中运行KcacheGrind
在Web浏览器中使用WebGrind
- WebGrind使用
单机WebGrind下载,放到对应的web根目录下,通过webgrind文件夹下的config.php可以做相关配置:

static $profilerDir = 'D:\wnmp\tmp\xdebug';

配置完成后显示以下页面:
image
- WebGrind常用参数分析:

invocation count 表示的是整个php页面从载入到执行完毕呈现,各种函数被调用的总次数

total self cost 表示的是函数自身消耗

total inclusive cost 表示的是此函数从开始到执行完毕所用消耗 ,包括自身消耗和调用其他函数消耗

点击一个父函数名后出现展开:
Calls - 此函数中调用并执行的所有函数/方法名 次数 及耗时
Total Call Cost - 被此父函数调用时,执行的总耗时
Count - 被此父函数调用时,执行的次数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值