Xdebug中文文档-基础特性
文档内容来自xdebug.org/docs
,翻译时xdebug版本为2.6
。我在官方文档基础上针对中文排版和教程内容的编排做了一些优化,希望中文文档看起来更容易理解。
中文文档github地址:https://github.com/Anoxia/xde...
相关设置参数
xdebug.default_enable
类型:boolean,默认值:1
参数设置为1时,在错误事件中会显示堆栈跟踪信息。您可以使用xdebug_disable()
来禁用显示你的代码的栈跟踪。由于这是Xdebug的基本功能之一,建议将此设置设置为1。
xdebug.force_display_errors
该功能仅适用于Xdebug> = 2.3
类型:int,默认值:0,
如果该参数被设置为1,那么总是会显示错误 ,不管PHP的display_errors 是什么设置。
xdebug.force_error_reporting
该功能仅适用于Xdebug> = 2.3
类型:int,默认值:0,
这个参数的设置是一个位掩码,就像error_reporting。该位掩码将与由error_reporting表示的位掩码进行逻辑“或”运算,从而确定应显示哪些错误。此设置只能在php.ini中进行,无论应用程序使用ini_set()
设置何值,都会强制显示某些错误。
xdebug.halt_level
该功能仅适用于Xdebug> = 2.3
类型:int,默认值:0,
这个参数允许您配置掩码,以确定显示哪些通知和(或)警告转换为错误。您可以配置由PHP生成的通知和警告,以及您自己生成的通知和警告(通过trigger_error()
)。
例如,要将strlen()
(不带参数)的警告转换为错误,您应该这样做:
ini_set('xdebug.halt_level', E_WARNING); strlen(); echo "Hi!\n";
这将导致错误信息的显示以及脚本的中止。echo "Hi!\n";
将不会被执行。
该设置是一个位掩码,所以要将所有通知和警告转换为所有应用程序的错误,可以在php.ini中设置:
xdebug.halt_level = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE
位掩码只支持上面提到的四个级别。
xdebug.max_nesting_level
类型:int,默认值:256
控制无限递归保护的保护机制。此设置的值是在脚本中止之前所允许的嵌套函数的最大级别。
在Xdebug 2.3之前,默认值是100。
xdebug.max_stack_frames
该功能仅适用于Xdebug> = 2.3类型:int,默认值:-1。
控制堆栈跟踪中显示的堆栈帧的数量,包括PHP错误堆栈跟踪期间的命令行以及HTML跟踪的浏览器。
xdebug.scream
该功能仅适用于Xdebug> = 2.1
类型:boolean,默认值:0。
如果此设置为1,则Xdebug将禁用@操作符
,以便通知,警告和错误不再隐藏。
相关函数
string xdebug_call_class()[int $ depth = 1])
正常情况返回调用类,如果堆栈帧不存在返回NULL
,堆栈帧没有类信息返回FALSE
此函数返回定义当前方法的类的名称,或者 `FALSE如果没有类与此调用关联。
Example:
<?php class Strings { static function fix_string($a) { echo xdebug_call_class(). "::". xdebug_call_function(). " is called at ". xdebug_call_file(). ":". xdebug_call_line(); } } $ret = Strings::fix_string( 'Derick' ); ?>
Returns:
Called @ /home/httpd/html/test/xdebug_caller.php:17 from ::{main}
要从较早的堆栈帧中检索信息,请使用可选的 $depth
参数。参数为1
时返回执行xdebug_call_class()
方法的调用信息的值:
Example:
<?php class Strings { static function fix_string( $a ) { echo xdebug_call_class( 1 ). "::". xdebug_call_function( 1 ). " is called at ". xdebug_call_file( 1 ). ":". xdebug_call_line( 1 ); } } $ret = Strings::fix_string( 'Derick' ); ?>
Returns:
Strings::fix_string is called at /home/httpd/html/test/xdebug_caller:17
参数为2
(默认值)时,返回调用当前方法的方法调用信息:
Example:
<?php class Strings { static function fix_string( $a ) { echo xdebug_call_class( 2 ). "::". xdebug_call_function( 2 ). " is called at ". xdebug_call_file( 2 ). ":". xdebug_call_line( 2 ); } static function fix_strings( array $a ) { foreach ( $a as $element ) { self::fix_string( $a ); } } } $ret = Strings::fix_strings( [ 'Derick' ] ); ?>
Returns:
Strings::fix_strings is called at /home/httpd/html/test/xdebug_caller:25
参数为0
时,返回相应的xdebug_call_*
调用的信息:
Example:
<?php class Strings { static function fix_string( $a ) { echo xdebug_call_class( 0 ). "::". xdebug_call_function( 0 ). " is called at ". xdebug_call_file( 0 ). ":". xdebug_call_line( 0 ); } static function fix_strings( array $a ) { foreach ( $a as $element ) { self::fix_string( $a ); } } } $ret = Strings::fix_strings( [ 'Derick' ] ); ?>
Returns:
::xdebug_call_function is called at /home/httpd/html/test/xdebug_caller:13
string xdebug_call_file( [int $depth = 1] )
返回调用文件,如果堆栈帧不存在返回NULL
该函数返回从当前函数/方法执行的文件名。
要从较早的堆栈帧中检索信息,请使用可选的 $depth
参数。
有关示例和更广泛的信息,请参见xdebug_call_class()
string xdebug_call_function( [int $depth = 1] )
如果堆栈帧不存在返回NULL
,如果堆栈帧没有函数/方法信息返回FALSE
。
该函数返回当前函数/方法的名称。
要从较早的堆栈帧中检索信息,请使用可选的 $depth
参数。
有关示例和更广泛的信息,请参见xdebug_call_class()
int xdebug_call_line( [int $depth = 1] )
返回改函数调用所在行号,如果堆栈帧不存在返回NULL
。
这个函数返回从当前函数/方法被调用的行号。
要从较早的堆栈帧中检索信息,请使用可选的 $depth
参数。
有关示例和更广泛的信息,请参见xdebug_call_class()
void xdebug_disable()
禁用堆栈跟踪
禁止在错误情况下显示堆栈跟踪。
void xdebug_enable()
启用堆栈跟踪
在错误情况下启用显示堆栈跟踪。
string xdebug_get_collected_errors( [int clean] )
该功能仅适用于Xdebug> = 2.1
返回所有收集的错误消息。
此函数返回收集缓冲区中的所有错误,其中包含使用xdebug_start_error_collection()
开始错误收集时存储在那里的所有错误 。
默认情况下,这个函数不会清除错误收集缓冲区。当该函数的参数为true
时缓冲区内容将被清除。
此函数返回一个字符串,其中包含格式化为“Xdebug table”的所有收集的错误。
array xdebug_get_headers()
该功能仅适用于Xdebug> = 2.1
通过调用PHP的header()
函数返回所有的头文件。
返回所有使用PHP的header()
函数设置的头文件,或者PHP内部设置的任何其他头文件(比如通过setcookie()
),作为返回数组内容。
Example:
<?php header( "X-Test", "Testing" ); setcookie( "TestCookie", "test-value" ); var_dump( xdebug_get_headers() ); ?>
Returns:
array(2) { [0]=> string(6) "X-Test" [1]=> string(33) "Set-Cookie: TestCookie=test-value" }
bool xdebug_is_enabled()
返回是否启用堆栈跟踪
返回是否在出现错误时显示堆栈轨迹。
int xdebug_memory_usage()
返回当前的内存使用情况
返回脚本使用的当前内存量。在PHP 5.2.1之前,这只有在使用--enable-memory-limit
进行编译时才有效。从5.2.1版本开始,这个函数总是可用的。
int xdebug_peak_memory_usage()
返回峰值内存使用情况
返回脚本直到现在使用的最大内存量。在PHP 5.2.1之前,这只有在使用--enable-memory-limit
进行编译时才有效。从5.2.1版本开始,这个函数总是可用的。
void xdebug_start_error_collection()
开始记录所有的通知,警告和错误,并阻止他们的显示。该功能仅适用于Xdebug> = 2.1
当执行这个函数时,Xdebug将导致PHP不显示任何通知,警告或错误。相反,它们根据Xdebug的正常错误格式化规则(即带有红色感叹号的错误表)格式化,然后存储在缓冲区中。这将继续,直到你调用xdebug_stop_error_collection()
。
这个缓冲区的内容可以通过调用xdebug_get_collected_errors()
来获取 ,然后显示。如果你想防止Xdebug强大的错误报告功能破坏你的布局,这是非常有用的。
void xdebug_stop_error_collection()
停止记录由xdebug_start_error_collection()
启动的所有通知,警告和错误。该功能仅适用于Xdebug> = 2.1
执行此函数时,由xdebug_start_error_collection()
启动的错误收集将 被中止。存储在收集缓冲区中的错误不会被删除,仍然可以通过xdebug_get_collected_errors()
获取 。
float xdebug_time_index()
返回当前时间索引
从脚本开始以秒为单位返回当前时间索引。
Example:
<?php echo xdebug_time_index(), "\n"; for ($i = 0; $i < 250000; $i++) { // do nothing } echo xdebug_time_index(), "\n"; ?>
Returns:
0.00038003921508789 0.76580691337585