CentOS使用Yum为PHP安装Xdebug调试神器

一、实验环境:
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • PHP版本:PHP 5.4.16 (cli) ,Yum方式安装
  • Xdebug版本:2.2.7-1.el7 

  
二、安装前准备:
  不管是Lamp环境还是Lnmp环境,这里不讲述安装过程,这里只讲述Xdebug的安装。虽然使用yum方式安装Xdebug比较简单,但是还是建议在实验环境测试,安装前最好备份数据。
 
三、安装:
1、使用yum安装xdebug:
[root@aiezu.com ~]# yum list|grep xdebug
php-pecl-xdebug.x86_64                  2.2.7-1.el7                    @epel    
[root@aiezu.com ~]# yum install php-pecl-xdebug
安装完成后,会生成“/etc/php.d/xdebug.ini”配置文件,配置文件中已经设置好xdebug的so文件,我们在这配置文件中设置xdebug设置参数。
 
四、配置Xdebug:
1、创建日志目录:
  我们创建/tmp/xdebug做为日志存储目录:
[root@aiezu.com ~]# mkdir -p /tmp/xdebug
[root@aiezu.com ~]# chmod -R 777 /tmp/xdebug
 
2、配置xdebug参数:
  修改“/etc/php.d/xdebug.ini”文件,根据你的需求配置参数,详细参数见附件中的《Xdebug详细参数表》。
; Enable xdebug extension module
zend_extension=/usr/lib64/php/modules/xdebug.so

;启用代码自动跟踪  
xdebug.auto_trace = On
;指定堆栈跟踪文件的存放目录  
xdebug.trace_output_dir = /tmp/xdebug
;PHP代码跟踪日志文件名格式
xdebug.trace_output_name = trace.%c.%H
;启用性能检测分析  
xdebug.profiler_enable=On
;允许收集传递给函数的参数变量  
xdebug.collect_params= 4
;允许收集函数调用的返回值  
xdebug.collect_return=On
;是否收集include、require的文件
xdebug.collect_includes = On
;是否收集内存的增加还是减少
;xdebug.show_mem_delta = On
;是否打印函数调用的最外围中的所有局部变量
;xdebug.show_local_vars = On
xdebug.profiler_enable = Off
;xdebug.profiler_output_dir = /tmp/xdebug
;xdebug.profiler_output_name = cachegrind.out.%H
注:设置“xdebug.auto_trace = On”时,将会在执行所有PHP脚本之前先自动启用跟踪;另外,你也可以设置为“xdebug.auto_trace = 0”,并在PHP脚本开头和结尾分别调用xdebug_start_trace()和 xdebug_stop_trace()函数开启和结束跟踪。如:
<?php
xdebug_start_trace();
//要追踪的代码
xdebug_stop_trace();
 
五、查看追踪日志:
  设置好配置文件后,并重启httpd服务,如果开启自动追踪,或者在脚本中使用xdebug_start_trace()和xdebug_stop_trace()函数开启追踪,那么在“/tmp/xdebug”命令下就可以看到追踪日志了。你可以使用vim查看他们,找出脚本中的问题。

附件:Xdebug详细参数表:
选项名类型默认值参数选项描述
xdebug.auto_tracebooleanOff是否在脚本运行之前自动调用相关追踪函数。
xdebug.cli_colorinteger0如果值=1:
  当处于CLI模式或连接虚拟控制台时,Xdebug将高亮显示var_dumps()和堆栈输出;在Windows中,这需要安装ANSICON工具。
如果值=2:
  不管是否处于CLI模式或连接虚拟控制台,Xdebug都会高亮显示var_dumps()或堆栈输出;这种情况下,你可能会看到转义后的代码。
该参数自2.2版本开始引入。
xdebug.collect_assignmentsbooleanOff用于控制是否为函数跟踪添加变量赋值功能。
该参数自2.1版本开始引入。
xdebug.collect_includesbooleanOn控制是否在跟踪文件中写入include()、include_once()、require()、require_once()等函数中用到的文件名。
xdebug.collect_paramsinteger0控制在调用函数时,是否收集传递给函数的参数信息。
  如果值=0,则不显示任何信息。
  如果值=1,只显示类型和大小信息,例如:string(6)、array(8)。
  如果值=2,将显示类型和大小,以及全部信息的工具提示。
  如果值=3,将显示变量的全部内容。
  如果值=4,将显示变量的全部内容和变量名。
如果参数值过大,这可能会占用大量的内存;不过,在Xdebug 2中不会出现该问题,因为Xdebug 2将相关数据写入磁盘中,而不是占用内存。
xdebug.collect_returnbooleanOff控制是否在追踪文件中写入函数调用的返回值。
xdebug.collect_varsbooleanOff控制是否收集指定作用域中的变量信息。由于需要反向工程PHP的操作码数组,因此Xdebug的分析速度可能比较慢。
xdebug.coverage_enablebooleanOn控制是否允许通过设置内部结构来启用代码覆盖率功能。
该参数自2.2版本开始引入。
xdebug.default_enablebooleanOn当发生异常或错误时,是否默认显示堆栈信息。
xdebug.dump.*stringEmpty这里的*可以是COOKIE, FILES, GET, POST, REQUEST, SERVER, SESSION中的任意一个。用于指定发生错误时是否显示超全局变量数组中的索引变量信息。比如,你想要显示请求的IP地址和请求方式,可以设置为xdebug.dump.SERVER=REMOTE_ADD,REQUEST_METHOD多个索引变量用英文逗号隔开,如果要输出其中的所有变量,可以直接用*,例如:xdebug.dump.GET=*
xdebug.dump_globalsbooleanOn控制是否显示通过xdebug.dump.*定义的所有超全局变量的信息。
xdebug.dump_oncebooleanOn如果出现多个错误,控制超全局变量信息是在所有错误中显示,还是只在第一个错误中显示。
xdebug.dump_undefinedbooleanOn控制是否显示超全局变量中未定义的值。
xdebug.extended_infointeger1是否强制进入PHP解析器的"extended_info"模式,这将允许Xdebug以远程调试器对文件或行添加断点。开启此模式将拖慢脚本的允许速度,该参数只能在php.ini中设置。
xdebug.file_link_formatstring,用于指定堆栈信息中用到的文件名称的链接样式,这允许IDE通过设置链接协议,直接点击堆栈信息中的文件名称,即可快速打开指定的文件。
例如:ZendStudio://%f@%l(%f表示文件路径,%f表示行号)。
自2.2版本开始引入。
xdebug.force_display_errorsinteger0是否强制显示错误信息。
自2.3版本开始引入。
xdebug.force_error_reportinginteger0是否强制显示所有错误级别的信息。
自2.3版本开始引入。
xdebug.halt_levelinteger0指定出现那些错误级别的错误时,中止程序运行。例如:xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE(也仅支持上述4种错误级别)。
自2.3版本开始引入。
xdebug.idekeystring*complex*指定传递给DBGp调试器处理程序的IDE Key。
xdebug.manual_urlstringhttp://www.php.net用于指定从函数堆栈和错误信息链接到的帮助手册的基本URL。
仅2.2.1以下版本可用。
xdebug.max_nesting_levelinteger100指定递归的嵌套层级数。
xdebug.overload_var_dumpbooleanOn当php.ini中的html_error设为1时,Xdebug是否默认使用自身的改进版本来重载var_dump()。
自2.2版本开始引入。
xdebug.profiler_appendinteger0当多个请求映射到相同文件时,指定是覆盖之前的调试信息文件还是追加内容到该文件中。
xdebug.profiler_enableinteger0指定是否启用Xdebug的性能分析,并创建性能信息文件。
xdebug.profiler_output_dirstring/tmp指定性能分析信息文件的输出目录
xdebug.profiler_output_namestringcachegrind.out.%p

 
指定性能分析信息文件的名称
xdebug.remote_enablebooleanOff是否开启远程调试
xdebug.remote_handlerstringdbgp指定远程调试的处理协议
xdebug.remote_hoststringlocalhost指定远程调试的主机名
xdebug.remote_logstring 指定远程调试的日志文件名
xdebug.remote_modestringreq可以设为req或jit,req表示脚本一开始运行就连接远程客户端,jit表示脚本出错时才连接远程客户端。
xdebug.remote_portinteger9000指定远程调试的端口号
xdebug.trace_optionsinteger0指定对于之后的请求,追踪文件是追加内容还是覆盖之前内容。
xdebug.trace_output_dirstring/tmp指定追踪文件的存放目录
xdebug.trace_output_namestringtrace.%c指定追踪文件的名称
xdebug.show_exception_tracebooleanOff是否开启异常跟踪
xdebug.show_mem_deltabooleanOff是否追踪内存的变化
xdebug.show_local_varsbooleanOff是否显示局部变量 

0 个评论

要回复文章请先登录注册