xdebug使用说明
常用配置
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 index, memory usage, memory delta (if the settingxdebug.show_mem_delta is enabled), level, function name, function 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_params,xdebug.collect_return,xdebug.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/.
xdebug使用说明的更多相关文章
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- phpstorm 配置 xdebug调试工具
前言 php是脚本型程序 每次出错都要手动exit断点程序不是很方便 哪里有需求哪里就有生产,Xdebug可以实现对php的断点调试.下面将我个人的安装经历分享给大家. 运行环境 windows ...
- xdebug断点调试原理
通过Xdebug进行远程调试时,PHPSTORM等IDE会监听Xdebug设置的调试ip和端口(php.ini中配置) [xdebug] ; Xdebug zend_extension=php_xde ...
- PHP的学习--在Atom中使用XDebug(Mac)
之前写过一篇博客<PHP的学习--在sublime中使用XDebug(Ubuntu)>,讲了在Ubuntu系统 sublime 中配置 XDebug,其实配置好之后,我也很少用,原因有两点 ...
- xDebug + webgrind 对 php 程序进行性能分析
环境 macOs Sierra php 7.0.8 MAMP Pro 集成环境 背景 最近有一个需要在微信朋友圈上线的 h5,本人做了一个抽奖的接口,也没多想,直接上 php ci(CodeIgnit ...
- PhpStorm集成xdebug进行断点调试
本文介绍如何使用PhpStorm集成xdebug在本地开发环境进行断点调试的技巧. 我配置的环境是:Windows10 + PhpStorm10.0.1 + PHP5.6. 1. 下载xdebug的扩 ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- php调试工具——XDebug使用
下面以windows平台和Aptana Studio为例,介绍XDdebug的使用. 1.安装XDebug 1)下载php的XDebug扩展.dll文件,官网下载地址是https://xdebug.o ...
- 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 一 ...
随机推荐
- cf D. Vessels
http://codeforces.com/contest/371/problem/D 第一遍写的超时了,然后看了别人的代码,思路都是找一个点的根,在往里面加水的时候碗中的水满的时候建立联系.查询的时 ...
- ShapeDrawable 资源
ShapeDrawable 用于定义一个基本的几何图形(如矩形.圆形.线条等),定义 ShapeDrawable 的 XML 文件的根元素是<shape.../>元素,该元素可指定如下属性 ...
- ldd显示可执行模块的dependenc
ldd的作用是打印可执行档依赖的共享库文件.它是glibc的一部分,由Roland McGrath和Ulrich Drepper维护:$ ldd --versionldd (GNU libc) 2.9 ...
- delphi 自定义消息
delphi 自定义消息 消息描述 Tmsg是 Windows系统用来记录描述一个具体的windows消息的.就是windows 用于封装应用程序及系统程序发生的消息,它是操作系统使用 ...
- winPcap_5_打开适配器并捕获数据包
知道如何获取适配器的信息了,那我们就开始一项更具意义的工作,打开适配器并捕获数据包.编写一个程序,将每一个通过适配器的数据包打印出来. 打开设备的函数是 pcap_open(). (Open a ge ...
- 禁止UITextField 使用粘贴复制功能
在开发中有时候会遇到这样的需求,就是一个文本框里面的内容不允许用户复制,或者不允许用户将其它地方复制的内容粘贴进来,本文交给你怎么实现禁止 UITextField 的粘贴.复制. 在 UITextFi ...
- 比较了一下基于PhoneGAP/JQ Mobile 等基于HTML5的Phone 开发框架
比较了一下基于PhoneGAP/JQ Mobile 等基于HTML5的Phone 开发框架,如果做APP客户端的化,想达到Native UI的效果,都是胡扯的,根本不可能. PhoneGAP 如果想达 ...
- eXtremeDB
I am doing a cluster test, why did I encounter the ld errorwhen compiling the several packages from ...
- SKPhysicsContact类
继承自 NSObject 符合 NSObject(NSObject) 框架 /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0 ...
- Android Framework 记录之二
接着上次的记录,续写. 23.services文件夹 文件 描写叙述 class AlarmManagerService extends IAlarmManager.Stub { //定时管理服务 p ...