常用配置

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. codeproject

    search: http http://www.codeproject.com/Articles/96620/Writing-Http-Handlers-and-Modules-in-IIS-7-5 ...

  2. poj 3686 The Windy's

    http://poj.org/problem?id=3686 #include <cstdio> #include <cstring> #include <algorit ...

  3. JAVA中的Transient

    Java中的transient,是用于声明序列化的时候不被存储的. 例子: package ThreadTest; /** * Created with IntelliJ IDEA. * User: ...

  4. winPcap_3_获取设备列表

    获取设备列表 int pcap_findalldevs_ex ( char * source, //The 'source' is a parameter that tells the functio ...

  5. MySQL如何利用索引优化ORDER BY排序语句 【转载】

    本文转载自:http://blog.csdn.net/ryb7899/article/details/5580624  .感谢相关作者. MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执 ...

  6. 西装定制平台Indochino获$1350万B轮融资 - 国际B2C - 亿邦动力网

    西装定制平台Indochino获$1350万B轮融资 - 国际B2C - 亿邦动力网 西装定制平台Indochino获$1350万B轮融资 作者: 韦龑来源: i黑马网2013-03-29 11:05 ...

  7. mysql如何删除重复记录

    方法有很多,除了最简便的, alter ignore table 表名  add UNIQUE index(字段名); 然后再将索引drop掉,这个方法外. 更加中规中矩的方法也是有的.. 比如我在网 ...

  8. POJ3273:Monthly Expense(二分)

    Description Farmer John is an astounding accounting wizard and has realized he might run out of mone ...

  9. NIO Socket非阻塞模式

    NIO主要原理和适用 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有 事件发生时,他会通知我们 ...

  10. Java中迭代列表中数据时几种循环写法的效率比较

    Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: for(int i = 0; i ...