PHP XDEBUG 扩展 | 文档 这个章节描述了 Xdebug 中可用的所有的配置设置。 相关设置xdebug.auto_trace
类型:布尔值,默认值: 0
当这个设置开启时,在脚本运行之前函数的跟踪调用将会开启。在 auto_prepend_file 中能实现跟踪代码。
xdebug.cli_color
类型:整数,默认值: 0, 由 Xdebug > 2.2 引入
如果这个设置为 1,当在 CLI 模式并且输出是一个终端(tty)时,Xdebug 将会给 var_dumps 和堆栈跟踪输出附上颜色。在 Windows 系统下,需要安装 ANSICON 工具。 如果设置为 2,无论是否连上了终端和 ANSICON 是否安装,Xdebug 都将会给 var_dumps 和堆栈跟踪输出附上颜色。在这种情况下将不会看到转义的代码。 看这篇文章了解更多信息。 xdebug.collect_assignments
类型:布尔值,默认值: 0, 由 Xdebug >= 2.1 引入
这个设置默认为 0,控制 Xdebug 是否应该添加变量语句到函数跟踪中。 从 Xdebug 2.6开始,变量赋值 ( xdebug.collect_includes
类型:布尔值,默认值: 1
这个设置默认为 1,控制 Xdebug 是否应该在 include(),include_once(),require() 或者 require_once() 的文件跟踪中写入文件名。
xdebug.collect_params
类型:整数,默认值: 0
这个设置默认为 0,当一个函数被函数跟踪或堆栈跟踪记录时,控制 Xdebug 是否收集参数传递给函数。 设置默认为 0 是因为非常大型的脚本会消耗巨大的内存,因此这样能让大型脚本运行起来。除了在大量函数调用和(或者)大型数据结构作为参数的脚本,都能最大程度的的安全的开启这个设置。 Xdebug 2 增加内存消耗时不会有这个问题,因为它从不将信息储存在内存中。相反它只会写入磁盘中。这意味着你需要查看磁盘空间使用情况。 这个设置有 4 个不同的值。针对每个值会有不同的信息显示。下面你将会看到每个值提供的信息是什么。也可以看堆栈跟踪特征的介绍提供的一些屏幕截图。
1 在 PHP 的 CLI 版本中将不会有 the tool tip,在输出文件中也没有。 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 速度加快一点,但是代码覆盖率分析将不会工作。
xdebug.default_enable
类型:布尔值,默认值: 1
如果这个设置设置为 1,错误事件发生时堆栈跟踪将会默认显示。可以在代码 xdebug_disable() 中关闭显示错误跟踪。这是 Xdebug 基础函数中的一个函数,建议将此设置设为 1.
xdebug.dump.*
类型:字符串,默认值: Empty
* 可以是 COOKIE,FILES,GET,POST,REQUEST,SERVER,SESSION 中的任何值。这 7 个设置控制了当错误状况出现时超级全局变量中的哪个数据将会显示。 每一个 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 在远程调试器中执行文件或行断点。当跟踪或者 profiling 脚本时通常应该关闭这个选项,因为 PHP 生成的 oparray 将会增加从而让脚本变慢。这个设置不能在脚本中用 ini_set() 设置,只能在 php.ini 中设置。
xdebug.file_link_format
类型:字符串,默认值: , 由 Xdebug > 2.1 引入
这个设置决定了在堆栈跟踪中显示文件名的链接形式。这允许 IDE 设置链接协议,通过点击 Xdebug 在堆栈跟踪中显示的文件名就能直接进入文件以及指定的行。格式会像这个示例: myide://%f@%l 可能的格式说明符:
针对不同的 IDE 或者 OS,这里是一些让其工作的说明清单: Firefox on Linux
Windows and netbeans
xdebug.filename_format
Type: string, 默认值: ...%s%n, 由 Xdebug >= 2.6 引入
这个设置决定了在 HTML 堆栈跟踪中 Xdebug 呈现的文件名(默认:
此表列出了可能的格式说明符。示例输出是根据全路径
xdebug.force_display_errors
类型:整数,默认值: 0, 由 Xdebug 2.3 引入
如果这个设置设置为 1,无论 PHP 的 display_errors 为多少,错误都将会显示。 xdebug.force_error_reporting
类型:整数,默认值: 0, 由 Xdebug 2.3 引入
这个设置是一个位掩码,像 error_reporting。这个位掩码将会与 error_reporting 所表示的位掩码进行逻辑与运算来决定应该显示哪种错误。这个设置只能在 php.ini 中完成,无论一个应用中 ini_set() 的值是多少,它允许你强制显示某些错误。 xdebug.halt_level
类型:整数,默认值: 0, 由 Xdebug 2.3 引入
这个设置允许你配置一个位掩码来决定是否将通知和(或者)警告转换为错误,以及将哪些通知和(或者)警告转换为错误。你可以配置 PHP 生成的通知和警告和你自己生成的通知和警告(意思是 trigger_error())。例如,转换 strlen()(没有参数)的警告为错误,你可以: ini_set('xdebug.halt_level', E_WARNING); strlen(); echo "Hi!\n"; 这结果将会是显示错误信息并且终止脚本。 这个设置是位掩码,针对所有应用转换所有通知和警告为错误,可以在 php.ini 中设置这个: xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE 这个位掩码只支持上面提到的 4 种错误级别。 xdebug.idekey
类型:字符串,默认值: *complex*
控制哪一个 IDE 键应该传递到 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 开始及更高版本 ,而是抛出一个 "Error" 异常。 在 Xdebug 2.3 之前,默认值是 xdebug.max_stack_frames
类型: 整型,默认值: -1,由 Xdebug >= 2.3 引入
控制堆栈跟踪中显示的堆栈帧数量,基于 PHP 错误堆栈跟踪期间的命令行,以及浏览器中的 HTML 跟踪。 xdebug.overload_var_dump
类型:布尔值,默认值: 2, 由 Xdebug > 2.1 引入
当 html_errors 在 php.ini 中设置为 你可以设置这个值为 在 Xdebug 2.4 之前,这个设置的默认值是 xdebug.profiler_aggregate
类型:整数,默认值: 0
当这个设置设为 1,将为多个请求编写单个分析文件。可以浏览多个页面或者重新加载页面以获得所有请求的平均值。这个文件将会命名为
.cachegrind.aggregate 。 你需要移动这个文件以获得另一轮聚合数据。xdebug.profiler_append
类型:整数,默认值: 0
如果这个设置设为 1,当一个新的请求映射到相同的文件(取决于 xdebug.profiler_enable_output_name 的设置)时 profiler 文件将不会被覆盖。反而新的 profile 将会被追加到文件中。
xdebug.profiler_enable
类型:整数,默认值: 0
开启 Xdebug 的 profiler 将会在 profile_output_directory 中创建文件。这些文件可以被 KCacheGrind 读取为可视化的数据。这个设置不能在脚本的 ini_set() 中设置。如果你想选择性的开启 profiler,请设置 xdebug.profiler_enable_trigger 为 1,而不是使用这个设置。
xdebug.profiler_enable_trigger
类型:整数,默认值:0
当这个设置设置为 1,通过使用 XDEBUG_PROFILE GET/POST 参数或者设置一个名 XDEBUG_PROFILE 的 cookie 将会触发生成 profiler 文件。这将会把 profiler 数据写入定义的目录。为了阻止 profiler 为每一个请求都生成 profile 文件,你需要设置 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 参数需要匹配设置在这个设置中的秘钥才能开启 profiler。
xdebug.profiler_output_dir
类型:字符串,默认值: /tmp
profiler 输出所在的这个目录将会被写入,需要确保运行 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 时,即便 HTTP GET/POST 变量不存在,Xdebug 也将总是尝试开启一个远程调试会话并且设法连接到一个客户端。
xdebug.remote_connect_back
类型:布尔值,默认值: 0, 由 Xdebug > 2.1 引入
如果开启,xdebug.remote_host 设置将会被忽略,并且 Xdebug 将会让 HTTP 请求设法连接到客户端。它会检查 $_SERVER['REMOTE_ADDR'] 变量来寻找哪个 IP 地址可以使用。 如果配置了 xdebug.remote_addr_header ,那么将在 $_SERVER['HTTP_X_FORWARDED_FOR'] 和 $_SERVER['REMOTE_ADDR'] 变量之前检查 具有配置名称的 $SERVER 变量。 这个设置不适用于通过 CLI 调试,因为 $SERVER 头部变量在这里不可用。 请注意这里没有过滤变量,即使它的地址不能匹配 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 和以后的版本仅支持 "dbgp" 作为协议。 xdebug.remote_host
类型:字符串,默认值:localhost
选择调试客户端在哪里运行,可以使用主机名或者 IP 地址。如果 xdebug.remote_connect_back 开启这个设置会被忽略。
对 Unix 域套接字支持由 Xdebug 2.6 引入。 xdebug.remote_log
类型:字符串,默认值:
如果设置了一个值,这将作为所有远程调试器通信记录的文件的名字。这个文件总是以 append-mode 打开,因此默认是不能被重写的。这里没有可用的并发保护。文件的格式像这样:
Log opened at 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
当一个调试连接初始化时选择。这个设置有两种不同的值:
xdebug.remote_port
类型:整数,默认值: 9000
Xdebug 尝试连接远程主机的端口。针对客户端和绑定的 debugclient,端口 9000 都是默认值。因为很多客户端使用的这个端口数,最好保持这个设置不要更改。
xdebug.remote_timeout
类型: 整型,默认值:200,由 Xdebug >= 2.6 引入
Xdebug 在 IDE 上等待确认传入调试连接以毫秒表示的时间量。默认值 200 毫秒在绝大多数情况下应该是足够的。如果你经常遇到调试请求丢失,可能是因为你有一个高延迟的网络,或者远离 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 的会话来触发生成跟踪文件。这将会把跟踪数据写入定义的目录。为了阻止 Xdebug 为每一个请求都生成跟踪文件,你需要设置 xdebug.auto_trace 为 0。可以通过配置 xdebug.trace_enable_trigger_value 来访问触发器本身。
xdebug.trace_enable_trigger_value
类型:字符串,默认值: "", 由 Xdebug >= 2.3 引入
这个设置可以用来限制在 xdebug.trace_enable_trigger 中谁能利用 XDEBUG_TRACE 功能进行概括。当将它的默认值更改为空字符串时,cookie 的值、GET 或者 POST 参数需要匹配设置在这个设置中的秘钥才能生成跟踪文件
xdebug.trace_format
类型:整数,默认值: 0
跟踪文件的格式:
计算机格式的字段:
查看函数跟踪的介绍的一些示例。 xdebug.trace_options
类型:整数,默认值: 0
当设置为 1,后续请求生成的跟踪文件将被追加而不是改写。
xdebug.trace_output_dir
类型:字符串,默认值: /tmp
跟踪文件将会被写入的目录,需要确保运行 PHP 的用户有权限对这个目录进行写入。
xdebug.trace_output_name
类型:字符串,默认值: trace.%c
这个设置决定了用来转储跟踪信息的文件名。这个设置指定了格式化说明符的格式,非常类似于 sprintf() 和 strftime()。这里有几个格式化说明符可以用来格式化文件名。".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 作为值来选择这个最大的值。 这个设置不会对通过远程调试功能发送到客户端的子元素数量有任何影响。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||