Xdebug是一個開放原始碼的PHP程序調試器(即一個Debug工具),可以用來跟蹤,調試和分析PHP程序的運行狀況。
# /srv/php/bin/pecl list-all | grep xdebug pecl/xdebug 2.1.2 Provides functions for function traces and profiling # /srv/php/bin/pecl install xdebug # mv /srv/php/lib/php/extensions/no-debug-non-zts-*/xdebug.so /srv/php/lib/php/extensions/
cat > /srv/php/etc/conf.d/xdebug.ini <<EOF [Zend Modules] zend_extension="/srv/php/lib/php/extensions/xdebug.so" [Xdebug] xdebug.profiler_enable = on xdebug.trace_output_dir = "/tmp/xdebug" xdebug.profiler_output_dir = "/tmp/xdebug" EOF
# /srv/php/bin/php -m | grep xdebug xdebug
參數說明
xdebug.default_enable 類型:布爾型 預設值:On 如果這項設置為On,堆棧跟蹤將被預設的顯示在錯誤事件中。你可以通過在代碼中使用xdebug_disable()來禁止堆疊跟蹤的顯示。因為這是xdebug基本功能之一,將這項參數設置為On是比較明智的。 xdebug.max_nesting_level 類型:整型 預設值:100 The value of this setting is the maximum level of nested functions that are allowed before the script will be aborted. 限制無限遞歸的訪問深度。這項參數設置的值是腳本失敗前所允許的嵌套程序的最大訪問深度。 堆棧跟蹤 相關參數設置 xdebug.dump_globals 類型:布爾型 預設值:1 限制是否顯示被xdebug.dump.*設置定義的超全局變數的值 例如,xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT 將打印 PHP 超全局變數 $_SERVER['REQUEST_METHOD']、$_SERVER['REQUEST_URI'] 和 $_SERVER['HTTP_USER_AGENT']。 xdebug.dump_once 類型:布爾型 預設值:1 限制是否超全局變數的值應該轉儲在所有出錯環境(設置為Off時)或僅僅在開始的地方(設置為On時) xdebug.dump_undefined 類型:布爾型 預設值:0 如果你想從超全局變數中轉儲未定義的值,你應該把這個參數設置成On,否則就設置成Off xdebug.show_exception_trace 類型:整型 預設值:0 當這個參數被設置為1時,即使捕捉到異常,xdebug仍將強制執行異常跟蹤當一個異常出現時。 xdebug.show_local_vars 類型:整型 預設值:0 當這個參數被設置為不等於0時,xdebug在錯環境中所產生的堆棧轉儲還將顯示所有局部變數,包括尚未初始化的變數在最上面。要注意的是這將產生大量的信息,也因此預設情況下是關閉的。 分析PHP腳本 相關參數設置 xdebug.profiler_append 類型:整型 預設值:0 當這個參數被設置為1時,檔案將不會被追加當一個新的需求到一個相同的檔案時(依靠xdebug.profiler_output_name的設置)。相反的設置的話,檔案將被附加成一個新檔案。 xdebug.profiler_enable 類型:整型 預設值:0 開放xdebug檔案的權限,就是在檔案輸出目錄中創建檔案。那些檔案可以通過KCacheGrind來閲讀來展現你的數據。這個設置不能通過在你的腳本中調用ini_set()來設置。 xdebug.profiler_output_dir 類型:字元串 預設值:/tmp 這個檔案是profiler檔案輸出寫入的,確信PHP用戶對這個目錄有寫入的權限。這個設置不能通過在你的腳本中調用ini_set()來設置。 xdebug.profiler_output_name 類型:字元串 預設值:cachegrind.out%p 這個設置決定了轉儲跟蹤寫入的檔案的名稱。 遠程Debug 相關參數設置 xdebug.remote_autostart 類型:布爾型 預設值:0 一般來說,你需要使用明確的HTTP GET/POST變數來開啟遠程debug。而當這個參數設置為On,xdebug將經常試圖去開啟一個遠程debug session並試圖去連接客戶端,即使GET/POST/COOKIE變數不是當前的。 xdebug.remote_enable 類型:布爾型 預設值:0 這個開關控制xdebug是否應該試着去連接一個按照xdebug.remote_host和xdebug.remote_port來設置監聽主機和連接埠的debug客戶端。 xdebug.remote_host 類型:字元串 預設值:localhost 選擇debug客戶端正在運行的主機,你不僅可以使用主機名還可以使用IP地址 xdebug.remote_port 類型:整型 預設值:9000 這個連接埠是xdebug試着去連接遠程主機的。9000是一般客戶端和被綁定的debug客戶端預設的連接埠。許多客戶端都使用這個連接埠數字,最好不要去修改這個設置。