XDebug是php的一款調試工具了,我們可使用像echo,print等等來調用錯誤,但我們這些函數沒辦法檢查函數執行次數與執行時間了,而利用XDebug就完全可以實現哦,下面我來介紹在winodws中php XDebug配置與安裝過程。
我們先要去官網下載下載php_xdebug.dll,2.將下載的php_xdebug.dll放到PHP的安裝目錄phpext下,然後在編輯php.ini文件
代碼如下
復制代碼
[xdebug]
zend_extension = "/home/ad/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.auto_trace = on
xdebug.auto_profile = on
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = on
xdebug.trace_output_dir = "/home/ad/xdebug_log"
xdebug.profiler_output_dir = "/home/ad/xdebug_log"
4.重啟Apache。
5.寫一個test.php,內容為<?php phpinfo(); ?>,如果輸出的內容中有看到xdebug,說明安裝配置成功。或者去/home/ad/xdebug_log下看看是不是日志已經出來了。
PHP Xdebug配置信息
Xdebug部分配置選項說明
xdebug.auto_trace = 1
是否允許Xdebug跟蹤函數調用,跟蹤信息以文件形式存儲,默認值為0
collect_params = 1
是否允許Xdebug跟蹤函數參數,默認值為0
xdebug.collect_return = 1
是否允許Xdebug跟蹤函數返回值,默認值為0
xdebug.profiler_enable = 1
打開xdebug的性能分析器,以文件形式存儲,這項配置是不能以ini_set()函數配置的,默認值為0
xdebug.profiler_output_dir
性能分析文件的存放位置,默認值為/tmp
xdebug.profiler_output_name
性能分析文件的命名規則,默認值為cachegrind.out.%p
xdebug.trace_output_dir
函數調用跟蹤信息輸出文件目錄,默認值為/tmp
xdebug.trace_output_name
函數調用跟蹤信息輸出文件命名規則,默認為trace.%c
設置選項
Category |
Setting |
Description |
日志
xdebug.trace_output_dir
日志追蹤輸出目錄
xdebug.trace_output_name
日志文件名,xdebug提供了一系列的標識符,生成相應格式的文件名,具體請參考官網
xdebug.trace_options
記錄添加到文件中方式:1 = 追加(如果存在該文件). 0 (default) = 覆蓋(如果存在該文件)
顯示數據
xdebug.collect_params
非零值 = 控制function的參數顯示選項
- 0 = 不顯示.
- 1 = 參數類型,值 (例如:array(9)).
- 2 = 同上1,只是在CLI模式下略微有區別
- 3 = 所有變量內容
- 4 = 所有變量內容和變量名(例如:array(0 => 9)).
xdebug.collect_return
1 = 顯示function返回值. Default 0 不顯示
xdebug.collect_vars
1 = 顯示當前作用域使用了哪些變量,顯示變量名,該選項不會記錄變量的值,如果需要,使用xdebug.collect_params
xdebug.collect_assignments
1 = 添加一行顯示變量賦值(若為1,形如$a = 1;這類Assignment Expression會在trace文件裡顯示)
格式
xdebug.trace_format
- 0 = 人可讀. 從左至右每列分別表示:時間點, 內存, 內存差 (需要設置xdebug.show_mem_delta=1), 等級, 函數名,函數參數 (需要設置,xdebug.collect_params=1,只要是非零), 當前代碼行所在文件名 , 行號.
- 1 = 機器可讀[1]. 需要借助第三方app,例如:xdebug trace file parser 或者 xdebug trace viewer
- 2 = html格式 即table,用browser打開,顯示table
xdebug.show_mem_delta
1 = 顯示每次函數調用內存消耗(內存差)
行為
xdebug.auto_trace
1 = 打開自動追蹤. (追蹤方式有2種,一種是自動追蹤,所有php腳本運行時,都會產生trace文件;另一種是觸發方式追蹤,如下)
xdebug.trace_enable_trigger[2]
1 = 使用 XDEBUG_TRACE GET/POST 觸發追蹤, 或者通過設置cookie XDEBUG_TRACE. 為了避免每次請求時,都會生成相應trace追蹤文件,你需要把auto_trace設置為0
注:該特性只在2.2+版本才能設置
[xdebug-general] Re: Is trace_enable_trigger defunct?
限制
xdebug.var_display_max_depth
數組和對象元素顯示深度:主要用在數組嵌套,對象屬性嵌套時,顯示幾級的元素內容. Default 3.
xdebug.var_display_max_data
變量值為字符串時顯示多長. Default 512.
xdebug.var_display_max_children
數組和對象元素顯示的個數. Default 128
一些自定義函數
Function |
Description |
void xdebug_enable()
手動打開,相當於xdebug.default_enable=on
void var_dump()
覆寫php提供的var_dump,出錯時,顯示函數堆棧信息,(前提:php.ini裡html_errors為1),使用xdebug.overload_var_dump 設置是否覆寫
void xdebug_start_trace(
string trace_file_path
[, integer options] )
手動控制需要追蹤的代碼段
trace_file_path :文件路徑(相對或絕對,若為空).如果為空,或者不傳參, 使用xdebug.trace_output_dir設置的目錄
options :
- XDEBUG_TRACE_APPEND: 1 = 追加文件內容末尾, 0 = 覆寫該文件
- XDEBUG_TRACE_COMPUTERIZED:
- 2 =同 xdebug.trace_format=1 .
- XDEBUG_TRACE_HTML: 4 = 輸出HTML表格,浏覽器打開為一table
void xdebug_stop_trace()
停止追蹤,代碼追蹤在該行停止
string xdebug_get_tracefile_name()
獲得輸出文件名,與 xdebug.auto_trace配合使用.
void xdebug_var_dump([mixed var[,...]])
輸出變量詳細信息,相當於php裡的var_dump,具體顯示請看這裡
xdebug.show_local_vars
默認為0,不顯示;非零時,在php執行出錯時,顯示出錯代碼所在作用域所有本地變量(注:這會產生大量信息,因此默認是closed),具體顯示差別如下圖[3]
array xdebug_get_declared_vars()
顯示當前作用域中已聲明的變量
array xdebug_get_code_coverage()
顯示某一段代碼內,代碼執行到哪些行[4]