文檔內容來自xdebug.org/docs
,翻譯時xdebug版本爲2.6
。我在官方文檔基礎上針對中文排版和教程內容的編排作了一些優化,但願中文文檔看起來更容易理解。php
英文原始文檔地址: https://xdebug.org/docs/
中文文檔github地址: https://github.com/Anoxia/xde...
Xdebug替換了PHP的var_dump()
函數來顯示變量。Xdebug的版本包含不一樣類型的不一樣顏色,並限制數組元素/對象屬性的數量,最大深度和字符串長度。還有一些其餘功能處理變量顯示。html
有許多設置能夠控制Xdebug修改的var_dump()函數的輸出 :xdebug.var_display_max_children,xdebug.var_display_max_data和xdebug.var_display_max_depth。這三個設置的效果最好用一個例子來展現。下面的腳本運行四次,每次都有不一樣的設置。您可使用這些標籤來查看差別。git
代碼:github
<?php class test { public $pub = false; private $priv = true; protected $prot = 42; } $t = new test; $t->pub = $t; $data = array( 'one' => 'a somewhat long string!', 'two' => array( 'two.one' => array( 'two.one.zero' => 210, 'two.one.one' => array( 'two.one.one.zero' => 3.141592564, 'two.one.one.one' => 2.7, ), ), ), 'three' => $t, 'four' => range(0, 5), ); var_dump( $data ); ?>
輸出(默認值):數組
array 'one' => string 'a somewhat long string!' (length=23) 'two' => array 'two.one' => array 'two.one.zero' => int 210 'two.one.one' => array ... 'three' => object(test)[1] public 'pub' => &object(test)[1] private 'priv' => boolean true protected 'prot' => int 42 'four' => array 0 => int 0 1 => int 1 2 => int 2 3 => int 3 4 => int 4 5 => int 5
輸出(xdebug.var_display_max_children = 2):服務器
array 'one' => string 'a somewhat long string!' (length=23) 'two' => array 'two.one' => array 'two.one.zero' => int 210 'two.one.one' => array ... more elements...
輸出(xdebug.var_display_max_data = 16):函數
array 'one' => string 'a somewhat long '... (length=23) 'two' => array 'two.one' => array 'two.one.zero' => int 210 'two.one.one' => array ... 'three' => object(test)[1] public 'pub' => &object(test)[1] private 'priv' => boolean true protected 'prot' => int 42 'four' => array 0 => int 0 1 => int 1 2 => int 2 3 => int 3 4 => int 4 5 => int 5
輸出(xdebug.var_display_max_depth = 2):工具
array 'one' => string 'a somewhat long string!' (length=23) 'two' => array 'two.one' => array ... 'three' => object(test)[1] public 'pub' => &object(test)[1] private 'priv' => boolean true protected 'prot' => int 42 'four' => array 0 => int 0 1 => int 1 2 => int 2 3 => int 3 4 => int 4 5 => int 5
輸出(xdebug.var_display_max_children = 3,xdebug.var_display_max_data = 8,xdebug.var_display_max_depth = 1):優化
array 'one' => string 'a somewh'... (length=23) 'two' => array ... 'three' => object(test)[1] ... more elements...
該功能僅適用於
Xdebug> = 2.2
類型:整數,默認值:0,翻譯
若是此設置爲1,則在CLI模式下以及輸出爲tty時,var_dumps和堆棧跟蹤Xdebug將着色輸出。在Windows上, 須要安裝ANSICON工具。
若是設置爲2,那麼不管是否鏈接到tty或是否安裝ANSICON,Xdebug將始終爲var_dumps和堆棧跟蹤着色。在這種狀況下,您最終可能會看到轉義碼。
看到這篇文章的一些更多的信息。
該功能僅適用於
Xdebug> = 2.1
當php.ini
中html_errors設置爲1或2時,Xdebug會默認更改var_dump輸出。若是您不但願如此,您能夠將其值設置爲0,可是首先檢查是否智能關閉html_errors。
該值設置爲2時,除了很好的格式化var_dump()輸出外,它還會將文件名和行號添加到輸出中。
在Xdebug 2.4以前,這個設置的默認值是 1
。
類型:整數,默認值:128
當使用xdebug_var_dump(), xdebug.show_local_vars或經過函數軌跡顯示變量時,控制數組的數量和子對象的屬性。
要禁用任何限制,請使用-1做爲值。
此設置對經過遠程調試功能發送給客戶端的子項數量沒有任何影響。
類型:整數,默認值:512
控制使用xdebug_var_dump(), xdebug.show_local_vars或經過函數軌跡顯示變量時顯示的最大字符串長度。
要禁用任何限制,請使用-1做爲值。
此設置對經過遠程調試功能發送給客戶端的子項數量沒有任何影響。
經過xdebug_var_dump(), xdebug.show_local_vars或函數軌跡顯示變量時,控制數組元素和對象屬性的嵌套級別。
您能夠選擇的最大值是1023。您也可使用-1做爲值來選擇此最大值。
此設置對經過遠程調試功能發送給客戶端的子項數量沒有任何影響。
顯示有關變量的詳細信息
這個函數被Xdebug重載,參見xdebug_var_dump()的描述 。
顯示有關變量的信息
此功能顯示有關一個或多個變量的結構化信息,其中包括其類型,值和引用計數信息。數組經過值遞歸地進行探索。這個函數的實現方式與PHP的debug_zval_dump()函數不一樣,是用來解決debug_zval_dump()函數存在的問題,由於變量自己實際上被傳遞給函數。Xdebug的版本更好,由於它使用變量名查找內部符號表中的變量,並直接訪問全部屬性,而沒必要處理實際將變量傳遞給函數。結果是這個函數返回的信息比PHP本身的顯示zval信息的函數要準確得多。
自Xdebug 2.3以來, 支持除簡單變量名稱(以下面的「a [2]」)以外的任何其餘內容。
例:
<?php $a = array(1, 2, 3); $b =& $a; $c =& $a[2]; xdebug_debug_zval('a'); xdebug_debug_zval("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)=3
將有關變量的信息返回到stdout。
此功能顯示有關一個或多個變量的結構化信息,其中包括其類型,值和引用計數信息。數組經過值遞歸地進行探索。與xdebug_debug_zval()的不一樣之處在於信息不是經過Web服務器API層顯示的,而是直接顯示在標準輸出上(因此當你在單進程模式下運行Apache時,它將在控制檯上輸出)。
例:
<?php $a = array(1, 2, 3); $b =& $a; $c =& $a[2]; xdebug_debug_zval_stdout('a');
輸出:
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)
顯示有關超級全局的信息
這個函數按照xdebug.dump.*
在php.ini的設置轉儲超級全局元素的值。對於下面的例子,php.ini中的設置是:
xdebug.dump.GET=* xdebug.dump.SERVER=REMOTE_ADDR Query string: ?var=fourty%20two&array[a]=a&array[9]=b
返回:
Dump $_SERVER | |
---|---|
$_SERVER['REMOTE_ADDR'] = |
string '127.0.0.1' *(length=9)* |
Dump $_GET | |
---|---|
$_GET['var'] = |
string 'fourty two' *(length=10)* |
$_GET['array'] = |
**array** 'a' => string 'a' *(length=1)* 9 => string 'b' *(length=1)* |
顯示有關變量的詳細信息
此功能顯示關於一個或多個表達式的結構化信息,包括其類型和值。數組經過值遞歸地進行探索。請參閱php.ini設置影響此功能的變量顯示功能的介紹(上文)。
例:
<?php ini_set('xdebug.var_display_max_children', 3 ); $c = new stdClass; $c->foo = 'bar'; $c->file = fopen( '/etc/passwd', 'r' ); var_dump( array( array(TRUE, 2, 3.14, 'foo'), 'object' => $c ) ); ?>
輸出:
array 0 => array 0 => boolean true 1 => int 2 2 => float 3.14 more elements... 'object' => object(stdClass)[1] public 'foo' => string 'bar' (length=3) public 'file' => resource(3, stream)