文档内容来自xdebug.org/docs,翻译时xdebug版本为2.6。我在官方文档的基础上,对中文排版和教程内容的布局做了一些优化,希望中文文档看起来更容易理解。英文原文档地址:https://xdebug.org/docs/中文文档github地址:https://github.com/Anoxia/xde...Xdebug替换PHP的var_dump()函数显示变量。Xdebug的版本包含不同类型的不同颜色,并限制数组元素/对象属性的数量、最大深度和字符串长度。还有一些处理变量显示的其他函数。设置对var_dump的影响有许多设置可以控制Xdebug修改后的var_dump()函数的输出:xdebug.var_display_max_children、xdebug.var_display_max_data和xdebug.var_display_max_depth。这三个设置的效果最好用一个例子来说明。下面的脚本运行了四次,每次都使用不同的设置。您可以使用这些选项卡来查看差异。代码:pub=$t;$data=array('one'=>'有点长的字符串!','two'=>array('two.一个'=>数组('two.one.zero'=>210,'two.one.one'=>数组('two.one.one.zero'=>3.141592564,'two.one.one.one'=>2.7,),),),'three'=>$t,'four'=>range(0,5),);var_dump($data);?>输出(默认值):array'one'=>string'有点长的字符串!'(length=23)'two'=>array'two.one'=>array'two.one.zero'=>int210'two.one.one'=>array...'three'=>object(test)[1]public'pub'=>&object(test)[1]private'priv'=>booleantrueprotected'prot'=>int42'four'=>array0=>int01=>int12=>int23=>int34=>int45=>int5输出(xdebug.var_display_max_children=2):array'one'=>string'有点长的字符串!(length=23)'two'=>array'two.one'=>array'two.one.zero'=>int210'two.one.one'=>array...更多元素...输出(xdebug.var_display_max_data=16):array'one'=>string'asomethinglong'...(length=23)'two'=>array'two.one'=>array'two.one.zero'=>int210'two.one.one'=>array...'three'=>object(test)[1]public'pub'=>&object(test)[1]private'priv'=>booleantrueprotected'prot'=>int42'four'=>array0=>int01=>int12=>int23=>int34=>int45=>int5输出(xdebug.var_display_max_depth=2):Array'one'=>string'有点长的字符串!(length=23)'two'=>array'two.one'=>array...'three'=>object(test)[1]public'pub'=>&object(test)[1]private'priv'=>booleantrueprotected'prot'=>int42'four'=>array0=>int01=>int12=>int23=>int34=>int45=>int5输出(xdebug.var_display_max_children=3,xdebug.var_display_max_data=8,xdebug.var_display_max_depth=1):array'one'=>string'asomewh'...(length=23)'two'=>array...'three'=>object(test)[1]...更多元素...相关设置xdebug.cli_color此功能仅适用于Xdebug>=2.2类型:整数,默认值:0,如果设置为1,var_dumps和堆栈跟踪当输出为tty时,Xdebug将在CLI模式下对输出进行着色。在Windows上,需要安装ANSICON工具。如果设置为2,则Xdebug将始终为var_dumps和堆栈跟踪着色,无论它是否连接到tty或是否安装了ANSICON。在这种情况下,您最终可能会看到转义码。有关更多信息,请参阅本文。xdebug.overload_var_dump此功能仅适用于Xdebug>=2.1当在php.ini中将html_errors设置为1或2时,Xdebug将默认更改var_dump输出。如果您不想这样做,可以将其值设置为0,但首先检查html_errors是否被巧妙地关闭。当此值设置为2时,除了很好地格式化var_dump()输出外,它还会将文件名和行号添加到输出中。在Xdebug2.4之前,此设置的默认值为1。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当通??过xdebug_var_dump()、xdebug.show_local_vars或函数跟踪显示变量时,控制数组元素和对象属性的嵌套级别。您可以选择的最大值是1023。您也可以使用-1作为值来选择这个最大值。此设置对通过远程调试发送给客户端的子项数量没有影响。相关函数voidvar_dump([mixedvar[,...]])显示有关变量的详细信息。该函数被Xdebug重载,参见xdebug_var_dump()的说明。voidxdebug_debug_zval([stringvarname[,...]])显示有关变量的信息此函数显示有关一个或多个变量的结构化信息,包括它们的类型、值和引用计数信息。按值递归地探索数组。该函数的实现方式与PHP的debug_zval_dump()函数不同,用于解决debug_zval_dump()函数的问题,因为变量本身实际上是传递给函数的。Xdebug的版本更好,因为它使用变量名在内部符号表中查找变量并直接访问所有属性,而无需处理实际将变量传递给函数。事实证明,这个函数返回的信息比PHP自带的显示zval信息的函数要准确得多。从Xdebug2.3开始,除了简单的变量名(比如下面的“a[2]”)之外的任何东西都被支持。示例:输出:a:(refcount=2,is_ref=1)=array(0=>(refcount=1,is_ref=0)=1,1=>(refcount=1,is_ref=0)=2,2=>(refcount=2,is_ref=1)=3)a[2]:(refcount=2,is_ref=1)=3voidxdebug_debug_zval_stdout([stringvarname[,...]])将有关变量的信息返回到标准输出。此函数显示有关一个或多个变量的结构化信息,包括它们的类型、值和引用计数信息。按值递归地探索数组。与xdebug_debug_zval()的区别在于信息不是通过web服务器API层显示,而是直接在标准输出上显示(所以当你在单进程模式下运行Apache时,它会在控制台输出)。示例:(refcount=1,is_ref=0)=1,1=>(refcount=1,is_ref=0)=2,2=>(refcount=2,is_ref=1)=3)voidxdebug_dump_superglobals()显示超级全局元素的信息该函数根据php.ini中xdebug.dump.*的设置转储超级全局元素的值。对于下面的示例,php.ini中的设置是:xdebug.dump.GET=*xdebug.dump.SERVER=REMOTE_ADDRQuerystring:?var=fourty%20two&array[a]=a&array[9]=bReturns:Dump$_SERVER$_SERVER['REMOTE_ADDR']=string'127.0.0.1'*(length=9)*Dump$_GET$_GET['var']=string'四十二'*(length=10)*$_GET['array']=**array**'a'=>string'a'*(length=1)*9=>string'b'*(length=1)*voidxdebug_var_dump([mixedvar[,...]])显示有关变量的详细信息此函数显示有关一个或多个表达式的结构化信息,包括它们的类型和值。按值递归地探索数组。请参阅影响此功能变量显示的php.ini设置的说明(上文)。例如:foo='bar';$c->file=fopen('/etc/passwd','r');var_dump(array(array(TRUE,2,3.14,'foo'),'object'=>$c));?>输出:array0=>array0=>booleantrue1=>int22=>float3.14更多元素...'object'=>object(stdClass)[1]public'foo'=>string'bar'(length=3)public'file'=>resource(3,stream)
