xdebug 的 profiler 是一个强大的工具,它能分析 PHP 代码,探测瓶颈,或者通常意义上来说查看哪部分代码运行缓慢以及可以使用速度提升。Xdebug 2 分析器输出一种兼容 cachegrind 文件格式的分析信息。这允许你能使用出色的 KCacheGrind 工具(Linux,KDE)来分析你的 profiling 数据。在 Linux 可以使用你最喜欢的包管理器安装 KCacheGrind。

在 windows 系统上,有预编译的 QCacheGrind 二进制程序(QCacheGrind 是没有 KDE 绑定的 KCacheGrind)。

在 Mac OSX 系统上,这里也有怎样安装 QCacheGrind 的说明

Windows 用户可以选择性的使用 WinCacheGrind。它的功能不同于 KCacheGrind,所以 这个页面的 KCacheGrind 使用文档章节不适用于这个程序。WinCacheGrind 目前不支持 Xdebug 2.3 引入的 cachegrind 文件格式的的文件和函数压缩。

这也有一种可替代 profile 信息演示的工具叫做 xdebugtoolkit。一款基于 web 前端叫做 Webgrind,和一款基于 java 的工具叫做 XCallGraph

如果你不能使用 KDE(或者不想使用 KDE)的 kcachegrind 包,可以用 perl 脚本 "ct_annotate",它能从分析器跟踪文件生成 ASCII 输出。

 

本节介绍Xdebug中可用的所有可用配置设置。


相关设置


xdebug.auto_trace

类型:布尔值,默认值:0

当此设置设置为on时,将在脚本运行之前启用函数调用的跟踪。这使得跟踪auto_prepend_file中的代码成为可能。

xdebug.cli_color

类型:整数,默认值:0,在Xdebug> = 2.2中引入

如果此设置为1,则Xdebug将在CLI模式下和输出为tty时为var_dumps和堆栈跟踪输出着色。在Windows上, 需要安装ANSICON工具。

如果设置为2,则Xdebug将始终为var_dumps和堆栈跟踪着色,无论它是连接到tty还是安装了ANSICON。在这种情况下,您最终可能会看到转义码。

有关更多信息,请参阅此文章


xdebug.collect_assignments

类型:布尔值,默认值:0,在Xdebug> = 2.1中引入

此设置默认为0,控制Xdebug是否应向函数跟踪添加变量赋值。

从Xdebug 2.6开始,=&还包括了by-var()赋值。


xdebug.collect_includes

类型:布尔值,默认值:1

此设置默认为1,控制Xdebug是否应将include(),include_once(),require()或require_once()中使用的文件名写入跟踪文件。

xdebug.collect_params

类型:整数,默认值:0

此设置默认为0,控制Xdebug是否应该在函数跟踪或堆栈跟踪中记录函数调用时收集传递给函数的参数。

该设置默认为0,因为对于非常大的脚本,它可能使用大量内存,因此无法运行巨大的脚本。您可以最安全地打开此设置,但是在脚本中可能会出现一些问题,其中包含大量函数调用和/或大量数据结构作为参数。Xdebug 2不会因内存使用量增加而出现此问题,因为它永远不会将此信息存储在内存中。相反,它只会被写入磁盘。这意味着您需要查看磁盘使用情况。

此设置可以有四个不同的值。对于每个值,显示不同数量的信息。您将在下面看到每个值提供的信息。另请参阅Stack Traces功能的介绍,以 获取一些屏幕截图。

显示的参数信息
0 没有。
1 元素的类型和数量(fe string(6),array(8))。
2

元素的类型和数量,以及完整信息的工具提示1

3 完整变量内容(具有xdebug.var_display_max_childrenxdebug.var_display_max_dataxdebug.var_display_max_depth设置的限制。
4 完整的变量内容和变量名称。
PHP序列化变量内容,没有名称。(Xdebug 2.3中的新功能)

1在PHP的CLI版本,它不会有刀尖,也不在输出文件。


xdebug.collect_return

类型:布尔值,默认值:0

此设置默认为0,控制Xdebug是否应将函数调用的返回值写入跟踪文件。

对于计算机化的跟踪文件(xdebug.trace_format = 1),这仅适用于Xdebug 2.3以上版本。


xdebug.collect_vars

类型:布尔值,默认值:0

此设置告诉Xdebug收集有关在特定范围内使用哪些变量的信息。由于Xdebug必须对PHP的操作码阵列进行反向工程,因此这种分析可能非常缓慢。此设置不会记录不同变量具有的值,使用xdebug.collect_params。仅当您希望使用xdebug_get_declared_vars()时,才需要启用此设置 。

xdebug.coverage_enable

类型:布尔值,默认值:1,在Xdebug> = 2.2中引入

如果此设置设置为0,则Xdebug将不会设置内部结构以允许代码覆盖。这大大加快了Xdebug的速度,但当然,Code Coverage Analysis不起作用。

xdebug.default_enable

类型:布尔值,默认值:1

如果此设置为1,则默认情况下将在错误事件中显示stacktraces。您可以使用xdebug_disable()禁用代码中的 堆栈跟踪。由于这是Xdebug的基本功能之一,建议将此设置保留为1。

xdebug.dump。*

类型:字符串,默认值:空

*可以是COOKIE,FILES,GET,POST,REQUEST,SERVER,SESSION中的任何一个。当出现错误情况时,这七个设置控制来自超全局的数据。

这些php.ini设置中的每一个都可以包含来自此超全局转储的变量的逗号分隔列表,或者*包含所有变量。确保在此设置中不添加空格。

要在发生错误时转储REMOTE_ADDR和REQUEST_METHOD以及所有GET参数,请添加以下设置:

xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
xdebug.dump.GET = *

xdebug.dump_globals

类型:布尔值,默认值:1

当此设置设置为时true,Xdebug会将通过xdebug.dump。*配置的超级全局变量的值添加到屏幕上的堆栈跟踪和错误日志(如果已启用)。

xdebug.dump_once

类型:布尔值,默认值:1

控制是否应该在所有错误情况(设置为0)或仅在第一个(设置为1)上转储超全局的值。

xdebug.dump_undefined

类型:布尔值,默认值:0

如果要从超全局转储未定义的值,则应将此设置设置为1,否则将其设置为0。

xdebug.extended_info

类型:整数,默认值:1

控制Xdebug是否应该为PHP解析器强制执行'extended_info'模式; 这允许Xdebug使用远程调试器执行文件/行断点。在跟踪或分析脚本时,您通常希望关闭此选项,因为PHP生成的oparray将增加大约三分之一的大小,从而减慢脚本速度。无法使用ini_set()在脚本中设置此设置,但仅在php.ini中设置。

xdebug.file_link_format

类型:字符串,默认值:,在Xdebug中引入> = 2.1

此设置确定在使用文件名的堆栈跟踪显示中生成的链接的格式。这允许IDE设置链接协议,通过单击Xdebug在堆栈跟踪中显示的文件名,可以直接转到行和文件。示例格式可能如下所示:

myide://%F @%L

可能的格式说明符是:

含义
%F 文件名
%L 行号

对于各种IDE / OS,有一些说明如何使这项工作:

Linux上的Firefox

  • 打开about:config
  • 添加一个新的布尔设置“network.protocol-handler.expose.xdebug”并将其设置为“false”
  • 将以下内容添加到shell脚本中~/bin/ff-xdebug.sh
    #!/ bin / sh的
    
    f =`echo $ 1 | cut -d @ -f 1 | sed's / xdebug:\ / \ ///'`
    l =`echo $ 1 | 切-d @ -f 2`

    添加到那个(取决于你是否有komodo,gvim或netbeans):

    • komodo $f -l $l
    • gvim --remote-tab +$l $f
    • netbeans "$f:$l"
  • 使脚本可执行 chmod +x ~/bin/ff-xdebug.sh
  • xdebug.file_link_format设置为xdebug://%f@%l

Windows和netbeans

  • 创建文件netbeans.bat并将其保存在您的路径中(C:\Windows将起作用):

    @echo关闭
    setlocal enableextensions enabledelayedexpansion
    设置NETBEANS =%1
    设置FILE =%~2
    %NETBEANS% - nosplash --console suppress --open“%FILE:~19%”
    nircmd win激活进程netbeans.exe

    注意:如果没有,删除最后一行nircmd

  • 将以下代码保存为netbeans_protocol.reg
    Windows注册表编辑器版本5.00
    
    [HKEY_CLASSES_ROOT \ netbeans的]
    “网址协议”=“”
    @ =“URL:Netbeans协议” [HKEY_CLASSES_ROOT \ netbeans的\的DefaultIcon]
    @ =“\”C:\\ Program Files \\ NetBeans 7.1.1 \\ bin \\ netbeans.exe,1 \“” [HKEY_CLASSES_ROOT \ netbeans的\壳] [HKEY_CLASSES_ROOT \ netbeans的\壳\开放] [HKEY_CLASSES_ROOT \ netbeans的\壳\开放\命令]
    @ =“\”C:\\ Windows \\ netbeans.bat \“\”C:\\ Program Files \\ NetBeans 7.1.1 \\ bin \\ netbeans.exe \“\”%1 \“”

    注意:确保将路径更改为Netbeans(两次),以及netbeans.bat批处理文件,如果您将其保存在其他位置C:\Windows\

  • 双击该netbeans_protocol.reg文件将其导入注册表。
  • xdebug.file_link_format设置为xdebug.file_link_format = "netbeans://open/?f=%f:%l"

xdebug.filename_format

类型:字符串,默认值:...%s%n,在Xdebug中引入> = 2.6

此设置确定Xdebug ...%s%n通过重载的xdebug_var_dump()(默认值 :)在HTML堆栈跟踪(默认值:)和位置信息中呈现文件名的格式%f

此表中列出了可能的格式说明符。示例输出根据完整路径呈现 /var/www/vendor/mail/transport/mta.php

含义 示例输出
%一种 Ancester:两个目录元素和文件名 mail/transport/mta.php
%F 完整路径 /var/www/vendor/mail/transport/mta.php
%N 名称:仅文件名 mta.php
%p 父:一个目录元素和文件名 transport/mta.php
%S 目录分隔符 \在Linux,OSX和其他类Unix系统上,/在Windows上

xdebug.force_display_errors

类型:int,默认值:0,在Xdebug中引入> = 2.3

如果将此设置设置为,1则无论PHP的display_errors设置如何,都将始终显示错误 。


xdebug.force_error_reporting

类型:int,默认值:0,在Xdebug中引入> = 2.3

此设置是一个位掩码,如error_reporting。该位掩码将与error_reporting to dermine 表示的位掩码逻辑OR运算,应显示错误。此设置只能在php.ini中进行,并允许您强制显示某些错误,无论应用程序使用ini_set()做什么。


xdebug.halt_level

类型:int,默认值:0,在Xdebug中引入> = 2.3

此设置允许您配置一个掩码,用于确定是否以及哪些通知和/或警告转换为错误。您可以配置由PHP生成的通知和警告,以及您自己生成的通知和警告(通过trigger_error())。例如,要将strlen()(不带参数)的警告转换为错误,您可以执行以下操作:

ini_set('xdebug.halt_level',E_WARNING);
的strlen();
回声“嗨!\ n”;

然后,这将导致显示错误消息和脚本的中止。echo "Hi!\n";不会被执行。

该设置是一个位掩码,因此要将所有通知和警告转换为所有应用程序的错误,您可以在php.ini中设置:

xdebug.halt_level = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE

位掩码仅支持上面提到的四个级别。


xdebug.idekey

类型:字符串,默认值:* complex *

控制哪些IDE Key Xdebug应传递给DBGp调试器处理程序。默认值基于环境设置。首先查阅环境设置DBGP_IDEKEY,然后是USER和最后一个USERNAME。默认设置为找到的第一个环境变量。如果找不到任何设置,则设置为默认值''。如果设置了此设置,它将始终覆盖环境变量。

xdebug.manual_url

类型:字符串,默认值:http://www.php.net,在Xdebug <2.2.1中引入

这是从函数跟踪和错误消息到消息中函数的手册页的链接的基本URL。建议将此设置设置为使用最近的镜像。

xdebug.max_nesting_level

类型:整数,默认值:256

控制无限递归保护的保护机制。此设置的值是在中止脚本之前允许的嵌套函数的最大级别。

在Xdebug 2.6之前,如果超出,这将产生致命的异常。从Xdebug 2.6及更高版本开始,将引发“ 错误 ”异常。

在Xdebug 2.3之前,默认值为100


xdebug.max_stack_frames

类型:整数,默认值:-1,在Xdebug中引入> = 2.3

控制堆栈跟踪中显示的堆栈帧数,在PHP错误堆栈跟踪期间在命令行上以及在HTML跟踪的浏览器中显示。


xdebug.overload_var_dump

类型:布尔值,默认值:2,在Xdebug> 2.1中引入

默认情况下,当html_errors php.ini设置为1或时,Xdebug会使用自己的改进版本重载var_dump()以显示变量 2。如果你不想这样,你可以将此设置设置为0,但首先检查是否关闭html_errors并不聪明。

您还可以2将此设置用作值。除了很好地格式化var_dump()输出外,它还会在输出中添加文件名和行号。该xdebug.file_link_format设置也很尊敬。(Xdebug 2.3中的新功能)

在Xdebug 2.4之前,此设置的默认值为 1


xdebug.profiler_aggregate

类型:整数,默认值:0

当此设置设置为1时,将为多个请求写入一个探查器文件。可以浏览多个页面或重新加载页面以获得所有请求的平均值。该文件将被命名 .cachegrind.aggregate。您需要移动此文件以获取另一轮聚合数据。

xdebug.profiler_append

类型:整数,默认值:0

当此设置设置为1时,如果新请求映射到同一文件,则不会覆盖探查器文件(取决于xdebug.profiler_output_name设置。而是将文件附加到新配置文件中。

xdebug.profiler_enable

类型:整数,默认值:0

启用Xdebug的分析器,该分析器在配置文件输出目录中创建文件 。KCacheGrind可以读取这些文件以可视化您的数据。无法使用ini_set()在脚本中设置此设置。如果要有选择地启用探查器,请将xdebug.profiler_enable_trigger设置为1 而不是使用此设置。

xdebug.profiler_enable_trigger

类型:整数,默认值:0

当此设置设置为1时,您可以使用XDEBUG_PROFILE GET / POST参数触发生成探查器文件,或者设置名为XDEBUG_PROFILE的cookie。然后,这将将探查器数据写入 定义的目录。为了防止探查器为每个请求生成配置文件,您需要将xdebug.profiler_enable设置 为0.可以通过xdebug.profiler_enable_trigger_value配置对触发器本身的访问。

xdebug.profiler_enable_trigger_value

类型:字符串,默认值:“”,在Xdebug中引入> = 2.3

此设置可用于限制谁可以使用xdebug.profiler_enable_trigger中概述的XDEBUG_PROFILE功能。当从其空字符串的默认值更改时,cookie,GET或POST参数的值需要与此设置的共享密钥集匹配,以便启动探查器。

xdebug.profiler_output_dir

键入:字符串,默认值:/ tmp

将编译探测器输出的目录,确保将运行PHP的用户具有对该目录的写入权限。无法使用ini_set()在脚本中设置此设置。

xdebug.profiler_output_name

键入:字符串,默认值:cachegrind.out。%p

此设置确定用于将跟踪转储到的文件的名称。该设置指定格式说明符的格式,与sprintf()和strftime()非常相似。有几种格式说明符可用于格式化文件名。

有关支持的说明符,请参阅xdebug.trace_output_name文档。


xdebug.remote_addr_header

类型:字符串,默认值:“”,在Xdebug中引入> = 2.4

如果xdebug.remote_addr_header配置为非空字符串,则该值将用作$ SERVER超全局数组中的键,以确定用于查找用于“连接回”的IP地址或主机名的标头。此设置仅与xdebug.remote_connect_back结合使用 ,否则将被忽略。


xdebug.remote_autostart

类型:布尔值,默认值:0

通常,您需要使用特定的HTTP GET / POST变量来启动远程调试(请参阅远程调试)。当此设置设置为1时,即使GET / POST / COOKIE变量不存在,Xdebug也将始终尝试启动远程调试会话并尝试连接到客户端。

xdebug.remote_connect_back

类型:布尔值,默认值:0,在Xdebug> = 2.1中引入

如果启用,则忽略xdebug.remote_host设置,Xdebug将尝试连接到发出HTTP请求的客户端。它检查$ _SERVER ['HTTP_X_FORWARDED_FOR']和$ _SERVER ['REMOTE_ADDR']变量以找出要使用的IP地址。

如果配置了xdebug.remote_addr_header,则将在$ _SERVER ['HTTP_X_FORWARDED_FOR']和$ _SERVER ['REMOTE_ADDR']变量之前检查具有已配置名称的$ SERVER变量。

此设置不适用于通过CLI进行调试,因为$ SERVER标头变量在那里不可用。

请注意,没有可用的过滤器,任何可以连接到Web服务器的人都可以启动调试会话,即使他们的地址与xdebug.remote_host不匹配 。


xdebug.remote_cookie_expire_time

类型:整数,默认值:3600,在Xdebug> = 2.1中引入

此设置可用于通过会话cookie增加(或减少)远程调试会话保持活动的时间。

xdebug.remote_enable

类型:布尔值,默认值:0

此开关控制Xdebug是否应尝试联系正在侦听主机和端口的调试客户端,并使用设置xdebug.remote_host和 xdebug.remote_port进行设置 。如果无法建立连接,脚本将继续,就像此设置为0一样。

xdebug.remote_handler

键入:字符串,默认值:dbgp

可以是'php3',它选择旧的PHP 3样式调试器 输出,'gdb',它启用GDB,如调试器接口或'dbgp' - 调试器协议。DBGp协议是唯一受支持的协议。

注意:Xdebug 2.1及更高版本仅支持'db​​gp'作为协议。


xdebug.remote_host

键入:字符串,默认值:localhost

选择运行调试客户端的主机,您可以使用主机名,IP地址或Unix域套接字的“unix:/// path / to / sock”。如果启用了xdebug.remote_connect_back,则忽略此设置。

Xdebug 2.6中引入了对Unix域套接字的支持。


xdebug.remote_log

类型:字符串,默认值:

如果设置为值,则将其用作记录所有远程调试器通信的文件的文件名。该文件始终以append-mode打开,因此默认情况下不会被覆盖。没有可用的并发保护。该文件的格式如下所示:

登录于2007-05-27 14:28:15开放
- > <init xmlns =“urn:debugger_protocol_v1”xmlns:xdebug =“http://xdebug.org/dbgp/x ... ight> </ init> < - step_into -i 1
- > <response xmlns =“urn:debugger_protocol_v1”xmlns:xdebug =“http://xdebug.org/db ...> </ response>

xdebug.remote_mode

键入:字符串,默认值:req

选择启动调试连接的时间。此设置可以有两个不同的值:

REQ
一旦脚本启动,Xdebug将尝试连接到调试客户端。
JIT
一旦出现错误情况,Xdebug将仅尝试连接到调试客户端。

xdebug.remote_port

类型:整数,默认值:9000

Xdebug尝试在远程主机上连接的端口。端口9000是客户端和捆绑的调试客户端的默认端口。由于许多客户端使用此端口号,因此最好不要更改此设置。

xdebug.remote_timeout

类型:整数,默认值:200,在Xdebug中引入> = 2.6

Xdebug在IDE上等待确认传入调试连接的时间量(以毫秒为单位)。在大多数情况下,默认值200 ms应该足够了。如果您经常遇到调试请求丢失,可能是因为您有一个高延迟网络,或远离IDE的开发盒,或者防火墙速度慢,那么您可以增加此值。

请注意,增加此值可能意味着在Xdebug尝试建立连接但您的IDE未侦听时,您的请求似乎“挂起”。


xdebug.scream

类型:布尔值,默认值:0,在Xdebug> = 2.1中引入

如果此设置为1,则Xdebug将禁用@(关闭)运算符,以便不再隐藏通知,警告和错误。

xdebug.show_error_trace

类型:整数,默认值:0,在Xdebug> = 2.4中引入

当此设置设置为1时,只要出现错误,Xdebug就会显示堆栈跟踪 - 即使实际捕获到此错误。

xdebug.show_exception_trace

类型:整数,默认值:0

当此设置设置为1时,Xdebug将在引发异常或错误时显示堆栈跟踪 - 即使实际捕获到此异常或错误。

PHP 7中引入了错误“异常”。


xdebug.show_local_vars

类型:整数,默认值:0

当此设置设置为某个值时!= 0 Xdebug在错误情况下生成的堆栈转储也将显示最顶层范围内的所有变量。请注意,这可能会生成大量信息,因此默认情况下处于关闭状态。

xdebug.show_mem_delta

类型:整数,默认值:0

当此设置设置为某个值时!= 0 Xdebug的人类可读生成的跟踪文件将显示函数调用之间的内存使用量差异。如果Xdebug配置为生成计算机可读的跟踪文件,那么它们将始终显示此信息。

xdebug.trace_enable_trigger

类型:布尔值,默认值:0,在Xdebug> = 2.2中引入

当此设置设置为1时,您可以使用XDEBUG_TRACE GET / POST参数触发跟踪文件的生成,或者设置名为XDEBUG_TRACE的cookie。然后,这将跟踪数据写入 定义的目录。为了防止Xdebug为每个请求生成跟踪文件,您需要将xdebug.auto_trace设置 为0.可以通过xdebug.trace_enable_trigger_value配置对触发器本身的访问 。

xdebug.trace_enable_trigger_value

类型:字符串,默认值:“”,在Xdebug中引入> = 2.3

这个设置可以用来限制谁可以使用的XDEBUG_TRACE功能中概述xdebug.trace_enable_trigger。当从其空字符串的默认值更改时,cookie,GET或POST参数的值需要与此设置的共享密钥集匹配,以便生成跟踪文件。

xdebug.trace_format

类型:整数,默认值:0

跟踪文件的格式。

描述
0 显示一个人类可读的缩进跟踪文件,其中包括: 时间索引内存使用情况内存增量(如果启用了设置xdebug.show_mem_delta),级别函数名称, 函数参数(如果启用了设置xdebug.collect_params), 文件名行号
1 写一种具有两种不同记录的计算机可读格式。输入堆栈帧并留下堆栈帧有不同的记录。下表列出了每种记录类型中的字段。字段按制表符分隔。
2 写一个用(简单)HTML格式化的跟踪。

计算机化格式的字段:

记录类型 1 2 3 4 6 7 8 9 10 11 12 - ......
条目 水平 功能# 总是'0' 时间指数 内存使用情况 功能名称 用户定义的(1)或内部函数(0) 包含/要求文件的名称 文档名称 电话号码 没有。参数 参数(与字段11中指定的数量一样多) - 制表符分隔
出口 水平 功能# 总是'1' 时间指数 内存使用情况
返回 水平 功能# 总是'R' 回报价值

有关示例,请参阅功能跟踪的介绍。


xdebug.trace_options

类型:整数,默认值:0

设置为“1”时,将追加跟踪文件,而不是在后续请求中覆盖。

xdebug.trace_output_dir

键入:字符串,默认值:/ tmp

将写入跟踪文件的目录,确保将运行PHP的用户具有对该目录的写入权限。

xdebug.trace_output_name

类型:字符串,默认值:trace。%c

此设置确定用于将跟踪转储到的文件的名称。该设置指定格式说明符的格式,与sprintf()和strftime()非常相似。有几种格式说明符可用于格式化文件名。始终会自动添加“.xt”扩展名。

可能的格式说明符是:

含义 示例格式 示例文件名
%C 当前工作目录的crc32 跟踪%C trace.1258863198.xt
%p PID 跟踪。%P trace.5174.xt
%R 随机数 跟踪。%R trace.072db0.xt
%S

脚本名称2

cachegrind.out%S cachegrind.out._home_httpd_html_test_xdebug_test_php
%T 时间戳(秒) 追查。%T trace.11​​79434742.xt
%u 时间戳(微秒) 跟踪。%u trace.11​​79434749_642382.xt
%H $ _ SERVER [ 'HTTP_HOST'] 跟踪。%H trace.kossu.xt
%R $ _ SERVER [ 'REQUEST_URI'] 跟踪。%R trace._test_xdebug_test_php_var = 1_var2 = 2.xt
%U $ _SERVER ['UNIQUE_ID'] 3 跟踪。%U trace.TRX4n38AAAEAAB9gBFkAAAAB.xt
%S session_id(如果设置,则来自$ _COOKIE) 追查。%S trace.c70c1ec2375af58f74b390bbdd2a679d.xt
%% 字面% 跟踪。%% 跟踪%%。XT

2此版本仅适用于自Xdebug 2.6以来的跟踪文件名。

3版本2.2中的新功能。这个是由Apache的mod_unique_id模块设置的


xdebug.var_display_max_children

类型:整数,默认值:128

当使用xdebug_var_dump(), xdebug.show_local_vars或通过函数跟踪显示变量时,控制数组子项的数量和对象的属性。

要禁用任何限制,请使用-1作为值。

此设置对通过“ 远程调试”功能发送给客户端的子节点数没有任何影响。


xdebug.var_display_max_data

类型:整数,默认值:512

控制使用xdebug_var_dump(), xdebug.show_local_vars或通过函数跟踪显示变量时显示的最大字符串长度。

要禁用任何限制,请使用-1作为值。

此设置对通过“ 远程调试”功能发送给客户端的子节点数没有任何影响。


xdebug.var_display_max_depth

类型:整数,默认值:3

控制使用xdebug_var_dump(), xdebug.show_local_vars或通过函数跟踪显示变量时,有多少嵌套级别的数组元素和对象属性。

您可以选择的最大值是1023.您还可以使用-1作为值来选择此最大数字。

此设置对通过“ 远程调试”功能发送给客户端的子节点数没有任何影响。

配置举例

php.ini中:

;pecl install xdebug-2.4.
[xdebug]
zend_extension=/usr/local/sinawap/apps/php-cms-5.4./lib/php/extensions/no-debug-non-zts-/xdebug.so
xdebug.remote_enable = On
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "10.222.22..."#修改下
xdebug.remote_port =
xdebug.idekey = IDEA
xdebug.profiler_output_dir = "/data1/profiler"
xdebug.profiler_enable =
xdebug.profiler_enable_trigger =
xdebug.profiler_enable_trigger_value=SINA_SCP
xdebug.trace_enable_trigger =
xdebug.trace_enable_trigger_value=SINA_SCP
xdebug.trace_output_dir=/data1/profiler
xdebug.show_mem_delta=
xdebug.collect_params=
xdebug.collect_return=
xdebug.trace_format=

配置完成之后重启 php-fpm

安装 xdebug 工具

安装 chrome 扩展 Xdebug helper

启用 Xdebug helper 的 profiler 工具

刷新页面, 查看设定的文件夹

在上边设定的文件夹中会生成 profiler 文件

使用工具来分析 profiler 文件

这里我使用 phpstorm 的分析工具来查看

Tools > Analyze Xdebug Profiler Snapshot

选择生成的 输出文件, 可以看到文件的解析信息, 这个对于分析自己写的php代码会有很大益处

使用IDEA/PHPStorm来debug

设置断点

按红线内设置

RUN->"Start listening for PHP Debug Connection"

选择“Debug”

选择之前 断点的文件

开始 debug

使用Webgrind分析profile

安装、使用: https://github.com/jokkedk/webgrind

php xdebug的配置、调试、跟踪、调优、分析的更多相关文章

  1. golang 性能调优分析工具 pprof (上)

    一.golang 程序性能调优 在 golang 程序中,有哪些内容需要调试优化? 一般常规内容: cpu:程序对cpu的使用情况 - 使用时长,占比等 内存:程序对cpu的使用情况 - 使用时长,占 ...

  2. golang 性能调优分析工具 pprof(下)

    golang 性能调优分析工具 pprof(上)篇, 这是下篇. 四.net/http/pprof 4.1 代码例子 1 go version go1.13.9 把上面的程序例子稍微改动下,命名为 d ...

  3. 性能测试 Apache参数配置与性能调优

    Apache性能调优 by:授客 QQ:1033553122 环境: Apache 2.4 1.选择合适的MPM(Multi -Processing Modules, 多处理模块) Unix/Linu ...

  4. JVM参数配置及内存调优

    一.JVM常见参数配置 堆内存相关参数 参数名称 含义 默认值   -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40% ...

  5. Kafka性能调优分析-线上环境篇

    一.背景介绍: 在平时的开发中,使用kafka来发送数据已经非常熟悉,但是在使用的过程中,其实并没有比较深入的探索kafka使用过程中 一些参数配置,带来的损失可能就是没有充分的发挥出kfka的优势, ...

  6. Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)

    1.hbase client配置参数 超时时间.重试次数.重试时间间隔的配置也比较重要,因为默认的配置的值都较大,如果出现hbase集群或者RegionServer以及ZK关掉,则对应用程序是灾难性的 ...

  7. SQL SERVER 跟踪调优书籍

    SQLServer监控和诊断 SQL SERVER 性能优化的艺术

  8. 深入理解Java虚拟机(六)——JVM调优分析与实战

    大内存硬件上的程序部署策略 单个虚拟机管理大内存 出现问题 如果JVM中的堆内存太小,就会频繁地出发GC,而每次GC会将用户线程暂停,所以,频繁地GC会导致长时间的停顿.如果扩大计算的内存的大小,就能 ...

  9. Linux 跟踪连接netfilter 调优

    Netfilter介绍 linux内核中的netfilter是一款强大的基于状态的防火墙,具有连接跟踪(conntrack)的实现.conntrack是netfilter的核心,许多增强的功能,例如, ...

  10. 服务器最大TCP连接数及调优汇总

    启动线程数: 启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比.如果任务都是CPU计算型任务,那么线程数最多不超过 ...

随机推荐

  1. 07.进程管理+作业控制+文件查找与压缩+文件压缩与打包+tar打包解包+NFS

    进程管理 程序放在磁盘上叫文件,把它复制到内存,并在cpu运行,就叫进程, 进程多少也反映当前运行程序的多少 进程在系统中会为每个进程生成一个进程号,在所有的进程中有一个特殊进程即init进程, 它是 ...

  2. 笔记4:WEB服务器

    web服务器 1 HTTP协议 http:超文本传输协议,基于tcp的方式,会更稳当更安全.协议就是规定了怎样去请求服务器,服务器如何返回信息.如下图红色方框标记所示: 打开浏览器电商广告原理: 我们 ...

  3. 登录-退出,在T分钟实现BC次用户登录退出,单次登录-退出%90用户时间t,需要的并发用户(线程)

    聚合报告%90响应时间:%90用户响应时小于该值 2种理解方式: 一. 1s可完成的用户1/t: T分钟完成的用户T *(1/t); BC次用户需要的线程数Thread= BC/(T*(1/t)) = ...

  4. 两道DP,四年修一次路

    第十一届:山区修路 题目描述 SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间,方圆数千平方公里,相传上古的神医在此搭架上山采药而得名.景区山峰均在海拔3000米以上,堪称" ...

  5. 获取 Docker 容器的 IP 地址

    docker inspect --format='{{.NetworkSettings.IPAddress}}' yourContainerIdOrContainerName

  6. 15-numpy笔记-莫烦pandas-3

    代码 import pandas as pd import numpy as np dates = pd.date_range('20130101', periods=6) df=pd.DataFra ...

  7. 刘长峰 js基础讲座笔记 课后作业

    1.DataType Assert 数据类型断言 一.typeof : 判断变量的类型 ,返回字符串 typeof a   返回 'undefined' .'boolean' .'string' .' ...

  8. 【redis】安装redis

    1.什么是redis? 非关系型数据库 2.为什么用redis? 非关系型数据库的一些优势,我这里用于缓存 3.怎么用redis? 安装,配置,用 4.怎么安装? 下载:http://download ...

  9. linux c 学习 GUN glibc 信息查看

    gun glibc 信息查看方法 方式 共享库作为可执行文件,默认位置可能为/lib/libc.so.6信息如下:   GNU C Library (GNU libc) stable release ...

  10. [Taro] taro 缓存

    taro 缓存 Taro.clearStorageSync() 清除全部缓存 Taro.setStorage(key,value)设置缓存 Taro.getStorage(key)获取缓存 Taro. ...