Xdebug提供的功能及使用方法

Xdebug的几种使用方法?

1)在php.ini中设置
2)在文件中ini_set(‘xdebug.xxx’, 1);
3)Xdebug提供一些方法直接使用

Xdebug提供的常用方式及具体使用方法

基本特性配置使用:

配置属性:
1)xdebug.default_enable
类型:布尔值, 默认值1
1 – 错误事件上默认显示堆栈跟踪,可以用xdebug_disable() 禁用显示堆栈跟踪。
2)xdebug.force_display_errors
类型:int, 默认值0
1 – 无论php.ini中display_error设置为什么都显示错误。
3)xdebug.halt_level
类型:int, 默认值0
E_WARNING – 将错误级别转换为应用程序错误
4)xdebug.max_nesting_level
类型:int, 默认值:256
控制无限递归的保护机制,如函数递归操过设置值,显示错误
5)xdebug.scream
类型:boolean,默认值0
如果是1则xdebug将禁用@运算符,不再隐藏通知
相关函数:
1)xdebug_call_class($param)
2)xdebug_call_function($param)
3)xdebug_call_file($param)
4)xdebug_call_line($param)
5)xdebug_get_headers() 返回所有设置的header头数据
6)xdebug_memory_useage() 当前内存使用情况
7)xdebug_peak_memory_useage() 峰值内存使用情况
8)xdebug_time_index()脚本执行时间

可变性的配置使用:

配置属性:
1)xdebug.var_display_max_children var_dump方法显示节点数
2)xdebug.var_display_max_data var_dump显示数据量
3)xdebug.var_display_max_depth var_dump深度
4)xdebug.cli_color
类型:int,默认值:0
1 – cli模式下var_dump增加颜色显示
相关函数:
1)xdebug_debug_zval() 变量的结构信息类型、值、引用计数等信息
2)xdebug_dump_superglobals() 显示有关超级全局信息

堆栈跟踪:

配置属性:
1)xdebug.collect_params
默认 – 堆栈显示调用方法
1 – 堆栈显示参数概览
2 – 同1
3 – 显示详细调用参数
4 – 显示详细调用参数及数据类型
2)xdebug.dump_globals
on – 显示全局变量
3)xdebug.dump.SERVER
REQUEST_URI – 全局URI参数
4)xdebug.show_local_vars
on – 本地的参数

函数跟踪:

配置属性:
1)xdebug.auto_trace
on – 启动trace
2)xdebug.collect_params
4
相关函数:
1)xdebug_start_trace([string trace_file [,integer options]]
trace_file : trace文件目录
options: 方式 XDEBUG_TRACE_APPEND 追加

代码示例

  1. <?php
  2. ini_set(‘xdebug.auto_trace’, on’);
  3. ini_set(‘xdebug.collect_params’, 4);
  4. ini_set(‘xdebug.trace_options’, 1);
  5. ini_set(‘xdebug.trace_output_dir’, ‘/tmp’); //此项不能ini_set设置
  6. ini_set(‘xdebug.trace_output_name’, trace.%c”);//此项不能ini_set设置
  7. xdebug_start_trace(‘/tmp/trace.xt’, XDEBUG_TRACE_APPEND);
  8. function addNum($a){
  9. return $a + mt_rand(0, 25);
  10. }
  11. for ($i=1; $i<10; $i++) {
  12. addNum($i);
  13. }
  14. $string = over”;
  15. echo $string;

代码覆盖率分析

相关函数:
1)xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE) 启动代码覆盖率
2)xdebug_get_code_coverage() 获取代码覆盖率数据
返回值如
array
5 => int 1
6 => int 1
其中key为代码行号, 1表示被执行 -1未执行 -2没有可执行代码

代码示例

  1. <?php
  2. xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE);
  3. $string = over”;
  4. echo $string;
  5. if (true) {
  6. $n = 123;
  7. $fg = 2313123;
  8. }else {
  9. $ggg = 123123;
  10. }
  11. var_dump(xdebug_get_code_coverage());

分析PHP脚本性能

1)php.ini中配置 xdebug.profiler_enable 设置为 1 启动分析
2)xdebug.profiler_output_dir 配置输出文件目录
3)生产分析文件后可以使用KCacheGrind 或 QCacheGrind(Mac)分析结果