Xdebug能替代PHP的var_dump()函數來顯示變量值。xdebug的版本包含對不同數據類型作數組元素/對象屬性、最大深度和字符串長度以不同顏色標識。這裡也有一些功能能很好地處理變量顯示。
相關設置:
xdebug.cli_color
類型: integer, 默認值: 0, 始於 2.2版以上
設置為1時,xdebug會在CLI模式下且在tty終端輸出時,會以有色顯示var_dump跟蹤輸出的文字。window下, ANSICON工具需要安裝。
設置為2時,則不管是否連接到tty終端或ANSICON是否被安裝,xdebug會一直用顏色顯示var_dump和調試跟蹤信息。這種情形下,你可能在結束處看到轉義碼。
xdebug.overload_var_dump
類型: boolean, 默認值: 2(2.4版之前,該默認值為1), 始於 2.1版以上
xdebug默認情況下會過載var_dump()函數使用自己的改進版本來顯示變量,如果html_errors在php.ini設置為1或2時。如果你真不要這樣的設置,可以將此設置設為0,但你要確認它沒智能地關閉了html_errors。
建議你使用2值。除了它能美觀地格式化顯示var_dump()輸出,還會輸出顯示文件名和行號。另外xdebug.file_link_format也相應提供了(2.3版本新特性)。
xdebug.var_display_max_children
類型: integer, 默認值: 128
在使用 xdebug_var_dump(),xdebug.show_local_vars 或 追蹤函數時,該設置控制數組元素和對象屬性的數量顯示。
若不受限制,可以設為-1值。
該設置不受Remot_Debuggin遠程調試的任何影響。
xdebug.var_display_max_data
類型: integer, 默認值: 512
在使用 xdebug_var_dump(),xdebug.show_local_vars 或 追蹤函數時,該設置控制字符串長度顯示最大值。
若不受限制,可以設為-1值。
該設置不受Remot_Debugging遠程調試的任何影響。
xdebug.var_display_max_depth
類型: integer, 默認值: 3
在使用 xdebug_var_dump(),xdebug.show_local_vars 或 追蹤函數時,該設置控制數組元素和對象屬性的顯示層級。
最大值為1023,你可以設為-1表示其最大值。
該設置不受Remot_Debugging遠程調試的任何影響。
相關函數:
void var_dump( [mixed var [, ...]] )
顯示變量的詳細信息。
該函數已被xdebug覆蓋,詳見xdebug_var_dump()。
void xdebug_debug_zval( [string varname [, ...]] )
該函數用於顯示一或多個變量的結構化信息,包含其類型、值和被引用信息。數組則循環遞歸探索元素值。該函數與PHP的debug_zval_dump()函數上實現不一樣,它能解決變量本身需要傳遞給該函數的問題。Xdebug版本的函數更好地利用了變量名稱在內部符號表中查找該變量而直接訪問所有屬性而無需處理變量傳遞給函數的問題。該函數返回的信息能更精確地表達zval信息。
Example:
<?php $a = array(1, 2, 3); $b =& $a; $c =& $a[2]; xdebug_debug_zval('a'); xdebug_debug_zval("a[2]"); ?> /** Returns: 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 */
void xdebug_debug_zval_stdout( [string varname [, ...]] )
與xdebug_debug_zval()相同,但該函數不通過web API界面顯示該信息,但會直接顯示在stdout設備(例如可以運行在apache的單進程模式下並顯示在終端)。
void xdebug_dump_superglobals()
該函數顯示出超全局變量的元素值,要顯示的值在php.ini的xdebug.dump.*中設置。例如php.ini中設置如下:
Example:
xdebug.dump.GET=* xdebug.dump.SERVER=REMOTE_ADDR Query string: ?var=fourty%20two&array[a]=a&array[9]=b Returns: 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)
void xdebug_var_dump( [mixed var [, ...]] )
該函數顯示一或多個表達式的結構化詳細信息,裡面包含類型和值。數組則遞歸探索其元素值。
Example:
<?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 ) ); ?> /** Returns: 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) */