技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> Xdebug使用指南

Xdebug使用指南

浏览:3210次  出处信息

想想我从前没用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的情况下显示是这样的:
exception
而用了xdebug之后,会输出直观的界面,如下图所示:
xdebug stack
现在只是将这个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_dump
如您所见,可以看到每一个变量的类型长度等信息。
看了后您可能会好奇为什么最后会有几个省略号,是这样的,您可以通过配置来控制要输出的维数,不光可以配置维数,还可以配置显示每一维显示数组的个数、元素内容的长度,这几个配置分别是

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官方网站去看一下!

建议继续学习:

  1. xdebug: var_dump函数设置    (阅读:2493)
  2. xdebug 配置,在这里备份下    (阅读:2339)
  3. Ubuntu 下为 PHP 添加 Xdebug 插件    (阅读:2329)
  4. 使用xdebug调试PHP 找出PHP程序的瓶颈    (阅读:2214)
  5. 前端开发中的性能那点事(一)巧用xdebug    (阅读:2018)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1