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功能

比如下面这段抛出异常的程序:

<?php
function test() {
    foo();
}

function foo() {
    bar();
}

function bar() {
    throw new exception('test by blankyao');
}

test();
</pre>

在没有xdebug的情况下显示是这样的:

而用了xdebug之后,会输出直观的界面,如下图所示:

现在只是将这个stack输出了,您还可以通过配置xdebug来输出更多信息以帮助我们debug,比如配置如下所示的配置:

ini_set('xdebug.collect_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 Traces Profiling 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函数设置    (阅读:2191)
  2. xdebug 配置,在这里备份下    (阅读:2069)
  3. 使用xdebug调试PHP 找出PHP程序的瓶颈    (阅读:2001)
  4. Ubuntu 下为 PHP 添加 Xdebug 插件    (阅读:1965)
  5. 前端开发中的性能那点事(一)巧用xdebug    (阅读:1723)

QQ技术交流群:445447336,欢迎加入!

扫一扫订阅我的微信号:IT技术博客大学习

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章