xdebug.auto_trace
类型:布尔值,默认值:0
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功能的介绍,以 获取一些屏幕截图。
1在PHP的CLI版本,它不会有刀尖,也不在输出文件。
xdebug.collect_return
类型:布尔值,默认值:0
xdebug.collect_vars
类型:布尔值,默认值:0
xdebug.coverage_enable
类型:布尔值,默认值:1,在Xdebug> = 2.2中引入
xdebug.default_enable
类型:布尔值,默认值: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
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
可能的格式说明符是:
对于各种IDE / OS,有一些说明如何使这项工作:
Linux上的Firefox
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
xdebug.force_error_reporting
类型:int,默认值:0,在Xdebug中引入> = 2.3
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
xdebug.profiler_enable
类型:整数,默认值:0
xdebug.profiler_enable_trigger
类型:整数,默认值:0
xdebug.profiler_enable_trigger_value
类型:字符串,默认值:“”,在Xdebug中引入> = 2.3
xdebug.profiler_output_dir
键入:字符串,默认值:/ tmp
将编译探测器输出的目录,确保将运行PHP的用户具有对该目录的写入权限。无法使用ini_set()在脚本中设置此设置。
xdebug.profiler_output_name
键入:字符串,默认值:cachegrind.out。%p
xdebug.remote_addr_header
类型:字符串,默认值:“”,在Xdebug中引入> = 2.4
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.remote_handler
键入:字符串,默认值:dbgp
可以是‘php3‘,它选择旧的PHP 3样式调试器 输出,‘gdb‘,它启用GDB,如调试器接口或‘dbgp‘ - 调试器协议。DBGp协议是唯一受支持的协议。
注意:Xdebug 2.1及更高版本仅支持‘db??gp‘作为协议。
xdebug.remote_host
键入:字符串,默认值:localhost
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中引入
xdebug.trace_enable_trigger_value
类型:字符串,默认值:“”,在Xdebug中引入> = 2.3
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_display_max_data
类型:整数,默认值:512
xdebug.var_display_max_depth
类型:整数,默认值:3
控制使用xdebug_var_dump(), xdebug.show_local_vars或通过函数跟踪显示变量时,有多少嵌套级别的数组元素和对象属性。
您可以选择的最大值是1023.您还可以使用-1作为值来选择此最大数字。
此设置对通过“ 远程调试”功能发送给客户端的子节点数没有任何影响。
配置举例
php.ini中:
;pecl install xdebug-2.4.1
[xdebug]
zend_extension=/usr/local/sinawap/apps/php-cms-5.4.45/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
xdebug.remote_enable = On
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "10.222.22..."#修改下
xdebug.remote_port = 9000
xdebug.idekey = IDEA
xdebug.profiler_output_dir = "/data1/profiler"
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_enable_trigger_value=SINA_SCP
xdebug.trace_enable_trigger = 1
xdebug.trace_enable_trigger_value=SINA_SCP
xdebug.trace_output_dir=/data1/profiler
xdebug.show_mem_delta=1
xdebug.collect_params=4
xdebug.collect_return=1
xdebug.trace_format=1
配置完成之后重启 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

