Xdebug使用指南
想想我从前没用Xdebug时候,真不敢想象那种日子啊,所以今天打算把这个东西介绍给大家,虽然不是什么新东西,毕竟很多同学还木有用过,所以我还是费点笔墨写写吧。
我在这里主要介绍如下几点:
- Xdebug是什么?
- Xdebug的Stack trace功能
- 用Xdebug来查看php的变量
- 用Xdebug进行程序概要分析
- Xdebug其他小功能
一、Xdebug是什么?
xdebug作为php的一个扩展出现,通过stack trace等功能来帮助我们调试php程序,帮助我们写一个bug free而且高效的php程序。项目主页是http://www.xdebug.org/,您可以在那看到介绍和一些文档,关于如何安装啥的我就不多说了。
二、Xdebug的Stack trace功能
比如下面这段抛出异常的程序:
在没有xdebug的情况下显示是这样的:
而用了xdebug之后,会输出直观的界面,如下图所示:
现在只是将这个stack输出了,您还可以通过配置xdebug来输出更多信息以帮助我们debug,比如配置如下所示的配置:
ini_set('xdebug.collect_vars', 'on');
ini_set('xdebug.show_local_vars', 'on');
这样就可以将本地变量打印出来,当然你可以配置更多来输出更多的信息!关于这些配置的具体介绍请看http://xdebug.com/docs/stack_trace,这里面有详细的介绍。
三、用Xdebug来查看php的变量
比如如下数组:
$foo = array( '0' => array('b', 'l', 'a', 'n', 'k'), '1' => array( array( 'sex' => 'male' ) ), '2' => array( array( array( 'name' => 'blankyao', ) ) ) ); var_dump($foo);
没使用php的时候只是以简单的形式将数组输出,而使用PHP之后是这样的:
如您所见,可以看到每一个变量的类型长度等信息。
看了后您可能会好奇为什么最后会有几个省略号,是这样的,您可以通过配置来控制要输出的维数,不光可以配置维数,还可以配置显示每一维显示数组的个数、元素内容的长度,这几个配置分别是
xdebug.var_display_max_depth
xdebug.var_display_max_data
xdebug.var_display_max_children
更多信息请看文档http://www.xdebug.org/docs/display
另外,xdebug提供的xdebug_debug_zval函数可以输出变量的zval结构,php自带的debug_zval_dump函数也可以,但是输出的结果没有xdebug_debug_zval直观。
四、用Xdebug进行程序概要分析
通过对程序进行概要分析,您可以看到整个程序的运行过程、变量传递、函数调用的过程、代码执行的时间以及占用的内存等内部的机制,通过使用xdebug,您可以通过配置一下很轻松的完成这些!
对程序进行profiling得到的结果可以用图形化的工具直观的显示出来,在linux下有CacheGrind,windows下有wincachegrind(已经好久没更新,大家可以去试下老高修改的一个版本,http://www.paulgao.com.cn/index.php?itemid=134&catid=1)。
关于具体的配置和使用,大家可以看下官方文档 Function TracesProfiling PHP Scripts
五、其他小功能
- 程序执行分析:通过调用xdebug_get_code_coverage()就可以看到哪行代码被执行了
- xdebug_call_class()、xdebug_call_file()、xdebug_call_function()、xdebug_call_line()分别可以返回当前正在执行的类、文件、方法/函数、行数
- xdebug_get_headers()可以返回所有的通过header()函数发出的header信息
- xdebug_time_index()可以返回当前程序执行的时间
以上就是我从前用到的过的一些功能,强大的xdebug还有一些其他强大的功能,大家可以去xdebug官方网站去看一下!
建议继续学习:
- xdebug: var_dump函数设置 (阅读:2522)
- xdebug 配置,在这里备份下 (阅读:2366)
- Ubuntu 下为 PHP 添加 Xdebug 插件 (阅读:2368)
- 使用xdebug调试PHP 找出PHP程序的瓶颈 (阅读:2250)
- 前端开发中的性能那点事(一)巧用xdebug (阅读:2044)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:blankyao 来源: Think IN CODE
- 标签: Xdebug
- 发布时间:2009-11-03 09:24:44
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成