摘要:英文原始文檔地址中文文檔地址當(dāng)被激活時,只要決定顯示通知,警告,錯誤等,就會顯示堆棧跟蹤。堆棧跟蹤中的變量默認(rèn)情況下,將在它生成的堆棧跟蹤中顯示可變信息。
文檔內(nèi)容來自xdebug.org/docs,翻譯時xdebug版本為2.6。我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看起來更容易理解。
英文原始文檔地址:https://xdebug.org/docs/
中文文檔github地址:https://github.com/Anoxia/xde...
當(dāng)Xdebug被激活時,只要PHP決定顯示通知,警告,錯誤等,就會顯示堆棧跟蹤。堆棧跟蹤顯示的信息以及顯示方式可以根據(jù)您的需要進(jìn)行配置。
Xdebug在錯誤情況下顯示的堆棧跟蹤信息量相當(dāng)保守(如果display.errors 在php.ini中設(shè)置為On)。這是因?yàn)榇罅康男畔p慢腳本的執(zhí)行速度和瀏覽器中堆棧跟蹤本身的渲染速度。但是,可以使堆棧軌跡以不同的設(shè)置顯示更詳細(xì)的信息。
堆棧跟蹤中的變量默認(rèn)情況下,Xdebug將在它生成的堆棧跟蹤中顯示可變信息。在收集或顯示時,可變信息可能需要相當(dāng)多的資源。但是,在很多情況下,顯示變量信息是很有用的,這就是Xdebug具有設(shè)置 xdebug.collect_params的原因。下面的腳本與下面的示例中顯示的輸出結(jié)果與此設(shè)置的不同值相結(jié)合。
Example:
bar = 100; $a = array( 42 => false, "foo" => 912124, $c, new stdClass, fopen( "/etc/passwd", "r" ) ); foo( $a ); ?>
Result:
xdebug.collect_params設(shè)置的 不同值給出了不同的輸出,您可以在下面看到:
xdebug.collect_params:默認(rèn)值
xdebug.collect_params:1
xdebug.collect_params:2
xdebug.collect_params:3
xdebug.collect_params:4附加信息
除了顯示傳遞給每個函數(shù)的變量的值之外,Xdebug還可以使用xdebug.dump_globals和xdebug.dump.*設(shè)置選擇性地顯示有關(guān)所選超級全局變量的信息。設(shè)置xdebug.dump_once 和xdebug.dump_undefined會稍微修改何時以及從可用的超級全局列表中顯示哪些信息。通過xdebug.show_local_vars設(shè)置,您可以指示Xdebug顯示用戶定義函數(shù)的最頂層堆棧中的所有可用變量。下面的例子顯示了這個(腳本是從上面的例子中使用的)。
默認(rèn)
ini_set("xdebug.collect_vars", "on"); ini_set("xdebug.collect_params", "4"); ini_set("xdebug.dump_globals", "on"); ini_set("xdebug.dump.SERVER", "REQUEST_URI"); ini_set("xdebug.show_local_vars", "on");
dump_superglobals=1
ini_set("xdebug.collect_vars", "on"); ini_set("xdebug.collect_params", "4"); ini_set("xdebug.dump_globals", "on"); ini_set("xdebug.dump.SERVER", "REQUEST_URI");
ini_set("xdebug.collect_vars", "on"); ini_set("xdebug.collect_params", "4"); ini_set("xdebug.dump_globals", "on"); ini_set("xdebug.dump.SERVER", "REQUEST_URI"); ini_set("xdebug.show_local_vars", "on");
show_local_vars=1
ini_set("xdebug.collect_vars", "on"); ini_set("xdebug.collect_params", "4"); ini_set("xdebug.dump_globals", "on"); ini_set("xdebug.dump.SERVER", "REQUEST_URI"); ini_set("xdebug.show_local_vars", "on");過濾
Xdebug 2.6引入了堆棧跟蹤的過濾功能。過濾器包括通過白名單,或通過黑名單,路徑或類名前綴排除。您可以使用過濾器來防止供應(yīng)商目錄中的任何內(nèi)容出現(xiàn)在堆棧跟蹤中,或僅包含來自特定名稱空間的類。
要設(shè)置一個過濾器,只顯示沒有類名的函數(shù)和方法,或者以“Xdebug”為前綴,可以調(diào)用xdebug_set_filter()
Example:
xdebug_set_filter( XDEBUG_FILTER_TRACING, XDEBUG_NAMESPACE_WHITELIST, [ "", "Xdebug" ] );
使用這個過濾器設(shè)置,您將只能看到函數(shù)(沒有類)和所有以“Xdebug”開頭的類的方法調(diào)用。這包括內(nèi)置的PHP函數(shù)(如strlen())和調(diào)用 XdebugTest::bar()。過濾器不強(qiáng)制執(zhí)行“Xdebug”是一個名稱空間的名稱,并且只從完全限定的類名稱開始進(jìn)行嚴(yán)格的字符比較。添加一個前綴以確保只包含Xdebug名稱空間中的類。
有關(guān)xdebug_set_filter() 參數(shù)的完整文檔將在其自己的文檔頁面上進(jìn)行介紹。
相關(guān)設(shè)置 xdebug.cli_color該功能僅適用于Xdebug> = 2.2
類型:整數(shù),默認(rèn)值:0
設(shè)置為1時,在CLI模式下以及輸出為tty時,Xdebug將著色var_dumps和堆棧跟蹤輸出。在Windows上, 需要安裝ANSICON工具。
設(shè)置為2時,那么無論是否連接到tty或是否安裝ANSICON,Xdebug將始終為var_dumps和堆棧跟蹤著色。在這種情況下,您最終可能會看到轉(zhuǎn)義碼。
有關(guān)更多信息,請參閱這篇文章。
xdebug.collect_includes類型:布爾值,默認(rèn)值:1
該設(shè)置控制著Xdebug是否應(yīng)該將include(),include_once(),require()或require_once()中使用的文件名寫入堆棧跟蹤文件。
xdebug.collect_params類型:整數(shù),默認(rèn)值:0
該設(shè)置控制Xdebug是否應(yīng)該在功能跟蹤或堆棧跟蹤中記錄一個函數(shù)調(diào)用時傳遞給函數(shù)的參數(shù)。
該設(shè)置默認(rèn)為0,因?yàn)閷τ诜浅4蟮哪_本,它可能會使用大量的內(nèi)存,因此默認(rèn)不開啟該功能。您可以打開這個設(shè)置,大部分情況下這個設(shè)置是安全的,如果您的腳本有非常多的函數(shù)調(diào)用/巨大數(shù)據(jù)結(jié)構(gòu)時,您可能會遇到一些為題。從Xdebug2開始不再有內(nèi)存使用的問題,因?yàn)樗粫⑦@些信息存儲在內(nèi)存中。而是寫入磁盤。這意味著您需要看看磁盤使用情況。
該設(shè)置可以有四個不同的值。對于每個值,顯示不同的信息量。下面您會看到每個值提供的信息。有關(guān)一些屏幕截圖,另請參閱Stack Traces功能的介紹 。
值 | 顯示的參數(shù)信息 |
---|---|
0 | 不顯示 |
1 | 元素的類型和數(shù)量(f.e. string(6), array(8)) |
2 | 元素的類型和數(shù)量,以及提供完整信息的工具提示( 在CLI版本的PHP中,它不會有工具提示,也不會在輸出文件中。) |
3 | 完整的變量內(nèi)容(限制取決于 xdebug.var_display_max_children, xdebug.var_display_max_data 和 xdebug.var_display_max_depth) |
4 | 全變量內(nèi)容和變量名稱。 |
5 | PHP序列化的變量內(nèi)容,沒有名字。(Xdebug 2.3中的新功能) |
類型:布爾值,默認(rèn)值:0
這個設(shè)置告訴Xdebug收集關(guān)于在一定范圍內(nèi)使用哪些變量的信息。Xdebug必須對PHP的操作碼數(shù)組進(jìn)行逆向工程,因此這種分析可能會非常緩慢。這個設(shè)置不會記錄不同的變量有哪些值,要是使用該功能請使用xdebug.collect_params。請在只有當(dāng)您想使用xdebug_get_declared_vars()時才需要啟用此設(shè)置 。
xdebug.dump.*類型:字符串,默認(rèn)值:空
*可以是任何COOKIE、 FILES、 GET、 POST、REQUEST、SERVER, SESSION。這七種設(shè)置控制發(fā)生錯誤時超級全局變量數(shù)據(jù)顯示。
該選項(xiàng)的設(shè)置由一個逗號分隔的變量列表組成,這個變量從這個超級全局到轉(zhuǎn)儲,或者*所有這些變量。確保您不要在此設(shè)置中添加空格。
例如,在發(fā)生錯誤時轉(zhuǎn)儲REMOTE_ADDR和REQUEST_METHOD以及所有GET參數(shù),請?zhí)砑右韵略O(shè)置:
xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD xdebug.dump.GET = *xdebug.dump_globals
類型:布爾值,默認(rèn)值:1
當(dāng)此設(shè)置設(shè)置為時true,Xdebug將通過xdebug.dump.*配置的超級全局值添加到屏幕上的堆棧跟蹤和錯誤日志(如果啟用)。
xdebug.dump_once類型:布爾值,默認(rèn)值:1
控制是否應(yīng)在所有錯誤情況(設(shè)置為0)或僅在第一個(設(shè)置為1)時拋出超全局值的值。
xdebug.dump_undefined類型:布爾值,默認(rèn)值:0
如果要從超級全局變量中取出未定義的值,應(yīng)將此設(shè)置設(shè)置為1,否則將其設(shè)置為0。
xdebug.file_link_format該功能僅適用于Xdebug> = 2.1
類型:字符串,默認(rèn)值:空
此設(shè)置確定使用文件名的堆棧跟蹤顯示中所建立的鏈接的格式。這允許IDE建立一個鏈接協(xié)議,通過點(diǎn)擊Xdebug在堆棧跟蹤中顯示的文件名,可以直接進(jìn)入一個行和文件。示例格式可能如下所示:
myide://%F @%L
可能的格式說明符是:
符 | 含義 |
---|---|
%F | 文件名 |
%L | 行號 |
對于各種IDE / OSses,列出了如何完成這項(xiàng)工作的一些說明:
Linux上的Firefox打開about:config
添加一個新的布爾設(shè)置network.protocol-handler.expose.xdebug并將其設(shè)置為false
將以下內(nèi)容添加到shell腳本中~/bin/ff-xdebug.sh
#! /bin/sh f=`echo $1 | cut -d @ -f 1 | sed "s/xdebug:////"` l=`echo $1 | cut -d @ -f 2`
添加到(取決于你是否有komodo,gvim或netbeans):
komodo $f -l $l
gvim --remote-tab +$l $f
netbeans "$f:$l"
使腳本可執(zhí)行 chmod +x ~/bin/ff-xdebug.sh
將xdebug.file_link_format設(shè)置為xdebug://%f@%l
Windows和netbeans
創(chuàng)建文件netbeans.bat
并將其保存在路徑中(C:Windows將工作):
@echo off setlocal enableextensions enabledelayedexpansion set NETBEANS=%1 set FILE=%~2 %NETBEANS% --nosplash --console suppress --open "%FILE:~19%" nircmd win activate process netbeans.exe
注意:如果沒有,請刪除最后一行nircmd。
將以下代碼保存為netbeans_protocol.reg:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT etbeans] "URL Protocol"="" @="URL:Netbeans Protocol" [HKEY_CLASSES_ROOT etbeansDefaultIcon] @=""C:Program FilesNetBeans 7.1.1in etbeans.exe,1"" [HKEY_CLASSES_ROOT etbeansshell] [HKEY_CLASSES_ROOT etbeansshellopen] [HKEY_CLASSES_ROOT etbeansshellopencommand] @=""C:Windows etbeans.bat" "C:Program FilesNetBeans 7.1.1in etbeans.exe" "%1""
注意:確保將路徑更改為Netbeans(兩次),以及netbeans.bat批處理文件(如果將其保存在其他位置)C:Windows。
雙擊該netbeans_protocol.reg文件將其導(dǎo)入到注冊表中。
將xdebug.file_link_format設(shè)置為xdebug.file_link_format = "netbeans://open/?f=%f:%l"
xdebug.filename_format該功能僅適用于Xdebug> = 2.6
類型:字符串,默認(rèn)值:...%s%n
此設(shè)置確定Xdebug在HTML堆棧跟蹤(默認(rèn):)中...%s%n通過重載的xdebug_var_dump()(默認(rèn)值 :)呈現(xiàn)文件名的格式和位置信息%f。
此表中列出了可能的格式說明符。示例輸出根據(jù)完整路徑呈現(xiàn) /var/www/vendor/mail/transport/mta.php。
符 | 含義 | 示例輸出 |
---|---|---|
%a | Ancester:兩個目錄元素和文件名 | mail/transport/mta.php |
%f | 完整路徑 | /var/www/vendor/mail/transport/mta.php |
%n | 名稱:只有文件名 | mta.php |
%p | 父項(xiàng):一個目錄元素和文件名 | transport/mta.php |
%s | 目錄分隔符 | 在Linux,OSX和其他類Unix系統(tǒng)/上 |
類型:字符串,默認(rèn)值:http : //www.php.net
這是從函數(shù)跟蹤和錯誤消息到消息中函數(shù)的手冊頁的鏈接的基礎(chǔ)URL。建議將此設(shè)置設(shè)置為使用最近的鏡像。、
xdebug.show_error_trace該功能僅適用于Xdebug> = 2.4
類型:整數(shù),默認(rèn)值:0
當(dāng)這個設(shè)置被設(shè)置為1時,只要發(fā)生錯誤,Xdebug將顯示一個堆棧跟蹤 - 即使這個錯誤實(shí)際上被捕獲了。
xdebug.show_exception_trace類型:整數(shù),默認(rèn)值:0
當(dāng)這個設(shè)置被設(shè)置為1時,無論何時發(fā)生異常或錯誤,Xdebug都會顯示一個堆棧跟蹤 - 即使這個異常或錯誤實(shí)際上被捕獲了。
異常 "exceptions" 是在PHP 7中引入的。
xdebug.show_local_vars類型:整數(shù),默認(rèn)值:0
當(dāng)這個設(shè)置被設(shè)置為!= 0時,Xdebug在錯誤情況下生成的堆棧轉(zhuǎn)儲也將顯示最頂級作用域中的所有變量。注意,這可能會產(chǎn)生大量的信息,因此默認(rèn)關(guān)閉。
xdebug.show_mem_delta類型:整數(shù),默認(rèn)值:0
當(dāng)這個設(shè)置被設(shè)置為!= 0時,Xdebug的可讀生成的跟蹤文件將顯示函數(shù)調(diào)用之間的內(nèi)存使用情況的差異。如果Xdebug被配置為生成計算機(jī)可讀的跟蹤文件,那么他們將始終顯示此信息。
xdebug.var_display_max_children類型:整數(shù),默認(rèn)值:128
當(dāng)使用xdebug_var_dump(), xdebug.show_local_vars或通過Function Traces顯示變量時,控制數(shù)組的子項(xiàng)和對象的屬性的數(shù)量。
要禁用任何限制,請使用-1作為值。
此設(shè)置對通過遠(yuǎn)程調(diào)試功能發(fā)送給客戶端的子項(xiàng)數(shù)量沒有任何影響。
xdebug.var_display_max_data類型:整數(shù),默認(rèn)值:512
控制使用xdebug_var_dump(),xdebug.show_local_vars或通過Function Traces顯示變量時顯示的最大字符串長度。
要禁用任何限制,請使用-1作為值。
此設(shè)置對通過遠(yuǎn)程調(diào)試功能發(fā)送給客戶端的子項(xiàng)數(shù)量沒有任何影響。
xdebug.var_display_max_depth類型:整數(shù),默認(rèn)值:3
通過 xdebug_var_dump(), xdebug.show_local_vars 或Function Traces顯示變量時,控制數(shù)組元素和對象屬性的嵌套級別。
您可以選擇的最大值是1023.您也可以使用-1作為值來選擇此最大值。
此設(shè)置對通過遠(yuǎn)程調(diào)試功能發(fā)送給客戶端的子項(xiàng)數(shù)量沒有任何影響。
相關(guān)功能 array xdebug_get_declared_vars()返回一個數(shù)組,其中每個元素是在當(dāng)前作用域中定義的變量名稱。需要啟用設(shè)置xdebug.collect_vars。
Example
Result
array 0 => string "a" (length=1) 1 => string "b" (length=1) 2 => string "item" (length=4)在5.1之前的PHP版本中,變量名稱“a”不在返回的數(shù)組中,因?yàn)樗丛谡{(diào)用函數(shù)xdebug_get_declared_vars()的作用域中使用。
array xdebug_get_function_stack()返回關(guān)于堆棧的信息
Example
fix_string($item); } } } $s = new strings(); $ret = $s->fix_strings(array("Derick"));Result
array 0 => array "function" => string "{main}" (length=6) "file" => string "/var/www/xdebug_get_function_stack.php" (length=63) "line" => int 0 "params" => array empty 1 => array "function" => string "fix_strings" (length=11) "class" => string "strings" (length=7) "file" => string "/var/www/xdebug_get_function_stack.php" (length=63) "line" => int 18 "params" => array "b" => string "array (0 => "Derick")" (length=21) 2 => array "function" => string "fix_string" (length=10) "class" => string "strings" (length=7) "file" => string "/var/www/xdebug_get_function_stack.php" (length=63) "line" => int 12 "params" => array "a" => string ""Derick"" (length=8)array xdebug_get_monitored_functions()該功能僅適用于Xdebug> = 2.4返回有關(guān)監(jiān)視功能的信息,其中包含有關(guān)在腳本中執(zhí)行受監(jiān)視函數(shù)的位置的信息。
Example
Result
/tmp/monitor-example.php:10: array(2) { [0] => array(3) { "function" => string(6) "strrev" "filename" => string(24) "/tmp/monitor-example.php" "lineno" => int(6) } [1] => array(3) { "function" => string(6) "strrev" "filename" => string(24) "/tmp/monitor-example.php" "lineno" => int(8) } }integer xdebug_get_stack_depth()返回當(dāng)前的堆棧深度級別。腳本的主體是0級,每個函數(shù)調(diào)用都會將堆棧深度級別加1。
none xdebug_print_function_stack( [ string message [, int options ] ] )該功能僅適用于Xdebug> = 2.1以類似于Xdebug在錯誤情況下顯示的方式顯示當(dāng)前函數(shù)堆棧。“message”參數(shù)允許您用自己的頭替換標(biāo)頭中的消息。
Example
Result
位掩碼“options”允許您配置一些額外的選項(xiàng)。目前支持以下選項(xiàng):
XDEBUG_STACK_NO_DESC
如果設(shè)置了此選項(xiàng),則打印的堆棧跟蹤將不會有標(biāo)題。如果您想從自己的錯誤處理程序打印堆棧跟蹤,這很有用,否則打印的位置就是xdebug_print_function_stack()處信息。(在Xdebug 2.3中引入)。
void xdebug_start_function_monitor( array $list_of_functions_to_monitor )該功能僅適用于Xdebug> = 2.4開始功能監(jiān)控。該函數(shù)啟動對列表中給出的函數(shù)的監(jiān)視作為該函數(shù)的參數(shù)。通過函數(shù)監(jiān)視,您可以查找代碼中的哪個位置作為參數(shù)提供的函數(shù)。
Example
您還可以將類方法和靜態(tài)方法添加到定義要監(jiān)視哪些函數(shù)的數(shù)組中。例如,要捕獲對DramModel::canSee的靜態(tài)調(diào)用和對Whisky-> drink的動態(tài)調(diào)用,可以使用以下命令啟動監(jiān)視器:
Example
drink"] );定義的函數(shù)區(qū)分大小寫,并且不會捕獲對靜態(tài)方法的動態(tài)調(diào)用。
void xdebug_stop_function_monitor()該功能僅適用于Xdebug> = 2.4停止監(jiān)視功能。為了獲得被監(jiān)視函數(shù)的列表,你需要使用xdebug_get_monitored_functions() 函數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28264.html
摘要:我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看起來更容易理解。控制堆棧跟蹤中顯示的堆棧幀的數(shù)量,包括錯誤堆棧跟蹤期間的命令行以及跟蹤的瀏覽器。 文檔內(nèi)容來自xdebug.org/docs,翻譯時xdebug版本為2.6。我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看起來更容易理解。 英文原始文檔地址:https://xdebug....
摘要:我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看起來更容易理解。英文原始文檔地址中文文檔地址目錄安裝本節(jié)介紹各個操作系統(tǒng)下如何安裝。堆棧跟蹤本節(jié)介紹當(dāng)被激活時,只要決定顯示通知,警告,錯誤等,就會顯示堆棧跟蹤。 文檔內(nèi)容來自xdebug.org/docs,翻譯時xdebug版本為2.6。我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看...
摘要:我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看起來更容易理解。英文原始文檔地址中文文檔地址替換了的函數(shù)來顯示變量。通過,或函數(shù)軌跡顯示變量時,控制數(shù)組元素和對象屬性的嵌套級別。 文檔內(nèi)容來自xdebug.org/docs,翻譯時xdebug版本為2.6。我在官方文檔基礎(chǔ)上針對中文排版和教程內(nèi)容的編排做了一些優(yōu)化,希望中文文檔看起來更容易理解。 英文原始文檔地...
摘要:默認(rèn)關(guān)閉如果該設(shè)置為,那么將禁用關(guān)閉操作符,以便不再隱藏通知警告和錯誤。將寫入垃圾收集統(tǒng)計信息輸出的目錄,確保將運(yùn)行的用戶具有對該目錄的寫入權(quán)限。此設(shè)置確定用于將垃圾回收統(tǒng)計信息轉(zhuǎn)儲到的文件的名稱。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的擴(kuò)展,用于協(xié)助調(diào)試和開發(fā)。 它包含一個用...
摘要:是一個開放源代碼的程序調(diào)試器即一個工具,可以用來跟蹤,調(diào)試和分析程序的運(yùn)行狀況。以下為安裝示例,安裝請參考集成開發(fā)和斷點(diǎn)調(diào)試環(huán)境的配置。指令的配置路徑必須是絕對路徑。 Xdebug是一個開放源代碼的PHP程序調(diào)試器(即一個Debug工具),可以用來跟蹤,調(diào)試和分析PHP程序的運(yùn)行狀況。以下為Windows+Phpstorm+Xampp+Xdebug安裝示例,MAC安裝請參考集成開發(fā)和斷...
閱讀 2272·2021-09-28 09:36
閱讀 2038·2021-09-22 15:14
閱讀 3634·2019-08-30 12:47
閱讀 3043·2019-08-30 12:44
閱讀 1239·2019-08-29 17:06
閱讀 543·2019-08-29 14:12
閱讀 983·2019-08-29 14:01
閱讀 2586·2019-08-29 12:17