5.21. Xdebug

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。

# /srv/php/bin/pecl list-all | grep xdebug
pecl/xdebug          2.1.2            Provides functions for function traces and profiling

# /srv/php/bin/pecl install xdebug

# mv /srv/php/lib/php/extensions/no-debug-non-zts-*/xdebug.so /srv/php/lib/php/extensions/
cat > /srv/php/etc/conf.d/xdebug.ini <<EOF
[Zend Modules]
zend_extension="/srv/php/lib/php/extensions/xdebug.so"

[Xdebug]
xdebug.profiler_enable = on
xdebug.trace_output_dir = "/tmp/xdebug"
xdebug.profiler_output_dir = "/tmp/xdebug"
EOF
# /srv/php/bin/php -m | grep xdebug
xdebug
		

参数说明

xdebug.default_enable
类型:布尔型 默认值:On
如果这项设置为On,堆栈跟踪将被默认的显示在错误事件中。你可以通过在代码中使用xdebug_disable()来禁止堆叠跟踪的显示。因为这是xdebug基本功能之一,将这项参数设置为On是比较明智的。
xdebug.max_nesting_level
类型:整型 默认值:100
The value of this setting is the maximum level of nested functions that are allowed before the script will be aborted.
限制无限递归的访问深度。这项参数设置的值是脚本失败前所允许的嵌套程序的最大访问深度。
堆栈跟踪
相关参数设置
xdebug.dump_globals
类型:布尔型 默认值:1
限制是否显示被xdebug.dump.*设置定义的超全局变量的值
例如,xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT 将打印 PHP 超全局变量 $_SERVER['REQUEST_METHOD']、$_SERVER['REQUEST_URI'] 和 $_SERVER['HTTP_USER_AGENT']。
xdebug.dump_once
类型:布尔型 默认值:1
限制是否超全局变量的值应该转储在所有出错环境(设置为Off时)或仅仅在开始的地方(设置为On时)
xdebug.dump_undefined
类型:布尔型 默认值:0
如果你想从超全局变量中转储未定义的值,你应该把这个参数设置成On,否则就设置成Off
xdebug.show_exception_trace
类型:整型 默认值:0
当这个参数被设置为1时,即使捕捉到异常,xdebug仍将强制执行异常跟踪当一个异常出现时。
xdebug.show_local_vars
类型:整型 默认值:0
当这个参数被设置为不等于0时,xdebug在错环境中所产生的堆栈转储还将显示所有局部变量,包括尚未初始化的变量在最上面。要注意的是这将产生大量的信息,也因此默认情况下是关闭的。
分析PHP脚本
相关参数设置
xdebug.profiler_append
类型:整型 默认值:0
当这个参数被设置为1时,文件将不会被追加当一个新的需求到一个相同的文件时(依靠xdebug.profiler_output_name的设置)。相反的设置的话,文件将被附加成一个新文件。
xdebug.profiler_enable
类型:整型 默认值:0
开放xdebug文件的权限,就是在文件输出目录中创建文件。那些文件可以通过KCacheGrind来阅读来展现你的数据。这个设置不能通过在你的脚本中调用ini_set()来设置。
xdebug.profiler_output_dir
类型:字符串 默认值:/tmp
这个文件是profiler文件输出写入的,确信PHP用户对这个目录有写入的权限。这个设置不能通过在你的脚本中调用ini_set()来设置。
xdebug.profiler_output_name
类型:字符串 默认值:cachegrind.out%p
这个设置决定了转储跟踪写入的文件的名称。
远程Debug
相关参数设置
xdebug.remote_autostart
类型:布尔型 默认值:0
一般来说,你需要使用明确的HTTP GET/POST变量来开启远程debug。而当这个参数设置为On,xdebug将经常试图去开启一个远程debug session并试图去连接客户端,即使GET/POST/COOKIE变量不是当前的。
xdebug.remote_enable
类型:布尔型 默认值:0
这个开关控制xdebug是否应该试着去连接一个按照xdebug.remote_host和xdebug.remote_port来设置监听主机和端口的debug客户端。
xdebug.remote_host
类型:字符串 默认值:localhost
选择debug客户端正在运行的主机,你不仅可以使用主机名还可以使用IP地址
xdebug.remote_port
类型:整型 默认值:9000
这个端口是xdebug试着去连接远程主机的。9000是一般客户端和被绑定的debug客户端默认的端口。许多客户端都使用这个端口数字,最好不要去修改这个设置。
		

5.21.1. Webgrind

Webgrind是一款可以通过浏览器图形化查看Xdebug输出的日志分析文件的软件

5.21.2. WinCacheGrind

WinCacheGrind是一款Windows下的可以图形化查看Xdebug输出的日志分析文件的软件

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-09-26 02:22:27

5.21. Xdebug的相关文章

重新定义云数据库 阿里云POLARDB 9月21日发布

贪吃蛇.吃豆人.打蜜蜂都是上世纪80-90年代风靡一时的经典游戏,它们见证了一代人的成长,成为他们童年的美好回忆. 今天,阿里云基于以上三款经典游戏发布了一系列的动画海报,似乎要以云计算让陈年老游戏起死回生,颠覆传统体验: 海报中,阿里云通过游戏动态对比展示了"OLD DATABASE"(旧时的数据库)与"POLARDB"(即将发布的全新一代云数据库)的体验差别,并以"有容乃大"."兼容并蓄"和"游刃有余"

21世纪创业与知识之间的辩证关系

 昨天我与4年前的某同事谈到科技创业,他现在做游戏,可以说做的很不错,当我们谈到创业的艰难时,我作了一个比喻,说创业其实很简单,基础就像做盘子,发展就像做菜系.如同一个人要成长一样,盘子做宽做扎实了,上面的菜系其实自己会来的,并不要自己去操心.他很智慧的回我,第一个盘子最难.后来呢,我把这段话放到说说里,以前的一个学生留了一个叫管道的视频,以这个动漫的形式进一步说明做盘子的重要性,这点我觉到他已经成长不少了.      这二个人都是做软件开发的,应该同属一个生肖的,一个注重游戏领域,一个注重于应

泛函编程(21)-泛函数据类型-Monoid

    Monoid是数学范畴理论(category theory)中的一个特殊范畴(category).不过我并没有打算花时间从范畴理论的角度去介绍Monoid,而是希望从一个程序员的角度去分析Monoid以及它在泛函编程里的作用.从这个思路出发我们很自然得出Monoid就是一种数据类型,或者是一种在泛函编程过程中经常会遇到的数据类型:当我们针对List或者loop进行一个数值的积累操作时我们就会使用到Monoid.实际上Monoid就是List[A] => A的抽象模型.好了,我们就不要越描

21个超赞的网站UI设计风格指南

  在网页设计 或 APP UI设计中,为了更好的规范设计文档,设计师通常会花时间去把各种UI元素组织起来,比如字体大小.段落行距.按钮颜色.尺寸等等,制作 Style Guide 虽然会浪费一些时间,但却有其它方面的好处,比如确保UI设计风格保持一致性,让开发人员遵循风格指南 去开发,节省沟通时间. 今天为大家整理了21个不错的 UI 设计说明范本,设计师们可以按照这个范本来为自己的项目做一个 UI 设计说明,有了这个设计风格指南 ,也能看出自己的作品是否整洁规范并提高沟通效率啦. 1. UI

JavaScript的21条基本知识点

这篇文章主要介绍了JavaScript的21条基本知识点的相关资料,需要的朋友可以参考下 1.JavaScript大小写敏感; 2.声明变量如果不写var,则为声明了全局变量;任何不是方法的函数,都是全局变量,其里面的this都指向window; 3.%运算符,求余数,保留整数,y=5;x=y%2;则x=1; 4.如需把两个或多个字符串变量连接起来,请使用 + 运算符,区别于php; 5.三目运算:greeting=(visitor=="PRES")?"Dear Presid

国务院决定5月19日至21日为全国哀悼日

为表达全国各族人民对四川汶川大地震遇难同胞的深切哀悼,国务院决定,2008年5月19日至21日为全国哀悼日.在此期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿.5月19日14时28分起,全国人民默哀3分钟,届时汽车.火车.舰船鸣笛,防空警报鸣响.  http://www.gov.cn/zwgk/2008-05/18/content_981560.htm   请各位站长及网友相互转载  让所有网民所有国人立即传达

成功经验谈:运营Blog的21个具体方法

每天都有上千个新的BLOG发布,但是只有几百人阅读到它们.产生收益的BLOG更是少之又少.下面有21个方法,在你BLOG发布的头两周可以试试: 第一印象 1.通过about页面和欢迎词在你和读者间架起桥梁. 想给读者留下最长久印象的最好方式,就是告诉读者你的个人情况.包括告诉读者你是谁,你是干什么的.你可以看看ProBlogger的作者Darren,他在首页上放置了自己的照片和说明链接.当然,你并不一定要在BLOG上放自己的照片,但应该有一个让读者了解的个人档案.这样会显得比较友善. 2.不要让

jQuery实现网页精美幻灯片特效的21个实例

文章简介:幻灯片在网页设计中应用的21个优秀案例. 幻灯片效果的应用在如今的网页设计中非常流行,这是一种突出重点,增强视觉趣味的有效方法.从技术角度来说,jQuery的流行使得幻灯片的实现变得十分简单. 下面列举了幻灯片在网页设计中应用的21个优秀案例,一起欣赏. Marco Rotoli Mark Dearman Filtered – A Portfolio WordPress Theme Bitfoundry Bigeye Stiff Rowlands Rodania Buro Maisen

运营Blog的21个具体方法

每天都有上千个新的BLOG发布,但是只有几百人阅读到它们.产生收益的BLOG更是少之又少.下面有21个方法,在你BLOG发布的头两周可以试试: 第一印象 1.通过about页面和欢迎词在你和读者间架起桥梁. 想给读者留下最长久印象的最好方式,就是告诉读者你的个人情况.包括告诉读者你是谁,你是干什么的.你可以看看ProBlogger的作者Darren,他在首页上放置了自己的照片和说明链接.当然,你并不一定要在BLOG上放自己的照片,但应该有一个让读者了解的个人档案.这样会显得比较友善. 2.不要让