常用配置

xdebug.var_display_max_children
整数类型,默认值128。用于控制通过xdebug_var_dump(),var_dump()方法时显示数组中子数组的个数或对象中属性的个数,设定为-1关闭该限制。

xdebug.var_display_max_data
整数类型,默认值521。用于控制xdebug_var_dump(),var_dump()方法时显示输出的字符串的长度,设定为-1关闭该限制。

xdebug.var_display_max_depth
整数类型,默认值3。用于控制通过xdebug_var_dump(),var_dump()方法时打印数组或对象时显示的层数,即深度。可设定的最大值为1023,也可以将其设定为-1以达到设定最大值的效果。

xdebug.collect_params
整数类型,默认值0。如果一个方法的访问记录被跟踪时,打开该选项,会同时记录传递给该方法的所有参数信息。可设定一下值:
0 关闭
1 记录参数的类型和长度,如 string(6), array(8)
2 Type and number of elements, with a tool tip for the full information
3 Full variable contents (with the limits respected as set by xdebug.var_display_max_children,xdebug.var_display_max_data and xdebug.var_display_max_depth.
4 Full variable contents and variable name.

xdebug.collect_vars
布而类型,默认值0。用于收集当前作用域下哪些变量被使用。

常用方法

void xdebug_debug_zval( [string varname [, ...]] )
用于打印一个或多个变量结构的相关信息。包括变量类型,值以及变量引用次数。如果传递的是一个数组,则会递归数组中的所有元素。

void xdebug_dump_superglobals()
该方法用于打印出所有通过xdebug.dump.*配置属性在php.ini文件中指定的所有全局变量信息,如,在php.ini文件中增加如下配置信息:

1 xdebug.dump.GET=*
2 xdebug.dump.SERVER=REMOTE_ADDR

在代码中通过调用xdebug_debug_zval()方法打印出GET下的所有变量信息以及SERVER['REMOTE_ADDR']变量信息。

array xdebug_get_declared_vars()
返回一个数组,包含当前作用域下的所有变量名称,需要打开xdebug_collect.vars配置。

array xdebug_get_function_stack()
一次打印出出调用xdebug_get_function_stack()方法所在的方法的所有方法调用信息。

integer xdebug_get_stack_depth()
返回当前栈的深度,main()深度为0

xdebug跟踪

xdebug可以将文件的运行流程及情况输出到日至文件中,通过访问这写文件,可以获取项目代码的运行流程以及相关一些信息,如内存使用率,内存峰值,执行时间等等。
输出到日至中的书写格式可以分为三种:易于阅读的格式,机器容易解析的格式以及HTML格式,可以通过xdebug.trace_format属性进行控制,其值有一下三种:
1 shows a human readable indented trace file with: time indexmemory usagememory delta (if the settingxdebug.show_mem_delta is enabled), levelfunction namefunction parameters (if the settingxdebug.collect_params is enabled), filename and line number.
2 writes a computer readable format which has two different records. There are different records for entering a stack frame, and leaving a stack frame. The table below lists the fields in each type of record. Fields are tab separated.
3 writes a trace formatted in (simple) HTML.
同样,输出结果也会受到其他一些配置选项的影响,如xdebug.collect_paramsxdebug.collect_returnxdebug.collect_assignments
为VIM添加解析日至文件的语法高亮功能:
首先将源代码文件夹下的contrib/xt.vim复制 ~/.vim/syntax目录下
然后编辑 ~/.vim/filetype.vim 并加入一下代码:

1 augroup filetypedetect
2 au BufNewFile,BufRead *.xt setf xt
3 augroup END

此时在使用vim打开生成的日志文件,即可看见对日志文件的格式化和高亮显示。

代码跟踪相关配置选项:
xdebug.auto_trace
boolean类型,默认值0。用于设定在脚本运行前是否自动跟踪方法的调用信息。

xdebug.collect_assignments

xdebug.collect_return
boolean类型,默认值0。用于设定是否返回调用方法的返回值。

xdebug.show_mem_delta
boolean类型,默认值0。如果启用该选项,并且输出格式为易于阅读式,则会在日志文件中显示调用两个方法之间的内存使用差异情况。

xdebug.trace_enable_trigger
boolean类型,默认值0。如果开启该选项,可以通过向POST或GET传递XDEBUG_TRACE参数来启用系统跟中功能,或者设定一个名为XDEBUG_TRACE的cookie信息,为了防止每次请求都会生成一个日志文件,需要将xdebug.auto_track设置为0。

xdebug.trace_format

xdebug.trace_options
boolean类型,默认值0。如果启用该选项,则之后的请求生成的日志信息会追加到日志文件中而不是替换当前日志文件中的内容。

xdebug.trace_output_dir
字符串类型,用于设定保存日志文件的路径信息

xdebug.trace_output_name
用于设定生成的日志文件的名字。

利用xdebug检测项目性能

xdebug提供了一个叫profiler的功能,可以用来检测项目的性能,以便能够找出项目的瓶颈,使用该功能,首先需要了解一些配置参数:

xdebug.profiler_enable
boolean类型,默认值0。用于设定是否开启生成报告文件,如果设定为1,每次请求都会生成一个性能报告文件。

xdebug.profiler_enable_trigger
boolean类型,默认值0。如果开启该选项,则在每次请求中如果GET/POST或cookie中包含XDEBUG_PROFILE变量名,则才会生成性能报告文件(前提是必须关闭xdebug.profiler_enable选项,否则该选项不起作用)。

xdebug.profiler_output_dir
字符串类型。用于设定生成的报告文件的存放的路径。

xdebug.profiler_output_name
字符串类型。用于设定生成的报告文件的名字,如cachegrind.out.%t.%p

查看生成的性能分析文件
可以通过KCacheGrind工具用来打开生成的报告文件,ubuntu下安装该工具:

1 sudo apt-get install kcachegrind

或者使用webgrind,网页版的KCacheGrind。
修改webgrind/config.php下的$storageDir属性='./tmp';将生成的图片文件保存到webgrind/tmp目录下而不是/tmp下。
修改$dotExecutable='dot';

在上述说到的生成方法跟踪报告和系统性能报告,大部分时候会选择手动选择是否生成报告文件,即开启*_enable_trigger选项,这是当需要生成报告时,通过手动添加需要传递的参数来生成报告文件。
可通过向浏览器添加xdebug插件来快速设定这些选项:
chrome:https://chrome.google.com/extensions/detail/eadndfjplgieldjbigjakmdgkmoaaaoc.
firefox:https://addons.mozilla.org/en-US/firefox/addon/58688/.

 
分类: PHP

xdebug使用说明的更多相关文章

  1. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  2. phpstorm 配置 xdebug调试工具

    前言   php是脚本型程序 每次出错都要手动exit断点程序不是很方便 哪里有需求哪里就有生产,Xdebug可以实现对php的断点调试.下面将我个人的安装经历分享给大家. 运行环境 windows ...

  3. xdebug断点调试原理

    通过Xdebug进行远程调试时,PHPSTORM等IDE会监听Xdebug设置的调试ip和端口(php.ini中配置) [xdebug] ; Xdebug zend_extension=php_xde ...

  4. PHP的学习--在Atom中使用XDebug(Mac)

    之前写过一篇博客<PHP的学习--在sublime中使用XDebug(Ubuntu)>,讲了在Ubuntu系统 sublime 中配置 XDebug,其实配置好之后,我也很少用,原因有两点 ...

  5. xDebug + webgrind 对 php 程序进行性能分析

    环境 macOs Sierra php 7.0.8 MAMP Pro 集成环境 背景 最近有一个需要在微信朋友圈上线的 h5,本人做了一个抽奖的接口,也没多想,直接上 php ci(CodeIgnit ...

  6. PhpStorm集成xdebug进行断点调试

    本文介绍如何使用PhpStorm集成xdebug在本地开发环境进行断点调试的技巧. 我配置的环境是:Windows10 + PhpStorm10.0.1 + PHP5.6. 1. 下载xdebug的扩 ...

  7. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  8. php调试工具——XDebug使用

    下面以windows平台和Aptana Studio为例,介绍XDdebug的使用. 1.安装XDebug 1)下载php的XDebug扩展.dll文件,官网下载地址是https://xdebug.o ...

  9. zend studio 13.5破解以及集成xdebug

    环境说明: 操作系统:Windows 7 Ultimate Edition Service Pack 1 PHP:7.0.11 TS Zend Studio:13.5.0 Xdebug:2.5.0 一 ...

随机推荐

  1. 用java模拟银行柜台排队

    4年前在办理银行业务的时候,看到每个办理柜台窗口前都有很多人排队. 同时在那个时间段,我正好重温了数据结构这本书.好像里面有提到银行. 所以当时就用java写了一段小程序来模拟窗口排队的情况. 有兴趣 ...

  2. Delphi 多线程 “尚未调用CoInitialize错误”的解决方法

    在Delphi  多线程中出现“尚未调用CoInitialize错误”的解决方法 解决方法如下: function  TMyThread.ExecTimer: Boolean;begin  Resul ...

  3. Linux 下 的 cc 和 gcc

    在Linux下一会看到cc,另一会又看到gcc,感觉又点混乱的样子.它们是同一个东西么,有啥区别呢? 一分为二地看: 首先,如果讨论范围在Unix和Linux之间,那么cc和gcc不是同一个东西.cc ...

  4. 2. Singleton模式

    这两种方法都提到了使用模版: (1) 参考文章:http://www.cnblogs.com/08shiyan/archive/2012/03/16/2399617.html 不同: a. 该方法直接 ...

  5. C语言中for循环的使用

    for循环的作用: 注意:要主要满足条件一和二后是先执行语句,后再执行条件三. 简单重复的输出 for(int i=0:i<10;i++){ printf("对一句话简单重复输出输出1 ...

  6. Stm32 定时器 定时时间设置及PWM频率 占空比的设置总结

    一.定时器的时钟: 当SYSCLK等于72M,APB1等于36M APB2等于72M时,定时器的时钟为72M.注意图中这句话:如果APB1/APB2预分频器=1则频率不变,否则频率x2.如果此时,AP ...

  7. F - Warm up - hdu 4612(缩点+求树的直径)

    题意:有一个无向连通图,现在问添加一条边后最少还有几个桥 分析:先把图缩点,然后重构图为一棵树,求出来树的直径即可,不过注意会有重边,构树的时候注意一下 *********************** ...

  8. top -Hp pid 显示所有的线程

    可以显示所有的线程 top -Hp pid [root@jiangyi01.sqa.zmf /home/ahao.mah] #top -Hp 41330 top - 22:49:40 up 27 da ...

  9. Task的运行过程分析

    Task的运行过程分析 Task的运行通过Worker启动时生成的Executor实例进行, caseRegisteredExecutor(sparkProperties)=> logInfo( ...

  10. 【C++深入探索】Copy-and-swap idiom详解和实现安全自我赋值

    分类: C/C++2012-08-30 21:40 2017人阅读 评论(2) 收藏 举报 任何管理某资源的类比如智能指针需要遵循一个规则(The Rule of Three): 如果你需要显式地声明 ...