xdebug使用說明

經常使用配置php

xdebug.var_display_max_children
整數類型,默認值128。用於控制經過xdebug_var_dump(),var_dump()方法時顯示數組中子數組的個數或對象中屬性的個數,設定爲-1關閉該限制。html

xdebug.var_display_max_data
整數類型,默認值521。用於控制xdebug_var_dump(),var_dump()方法時顯示輸出的字符串的長度,設定爲-1關閉該限制。
git

xdebug.var_display_max_depth
整數類型,默認值3。用於控制經過xdebug_var_dump(),var_dump()方法時打印數組或對象時顯示的層數,即深度。可設定的最大值爲1023,也能夠將其設定爲-1以達到設定最大值的效果。
github

xdebug.collect_params
整數類型,默認值0。若是一個方法的訪問記錄被跟蹤時,打開該選項,會同時記錄傳遞給該方法的全部參數信息。可設定一下值:
0 關閉
1 記錄參數的類型和長度,如 string(6), array(8)
2 Type and number of elements, with a tool tip for the full information
3 Full variable contents (with the limits respected as set by xdebug.var_display_max_children,xdebug.var_display_max_data and xdebug.var_display_max_depth.
4 Full variable contents and variable name.
web

xdebug.collect_vars
布而類型,默認值0。用於收集當前做用域下哪些變量被使用。
chrome

經常使用方法ubuntu

void xdebug_debug_zval( [string varname [, ...]] )
用於打印一個或多個變量結構的相關信息。包括變量類型,值以及變量引用次數。若是傳遞的是一個數組,則會遞歸數組中的全部元素。
vim

void xdebug_dump_superglobals()
該方法用於打印出全部經過xdebug.dump.*配置屬性在php.ini文件中指定的全部全局變量信息,如,在php.ini文件中增長以下配置信息:
數組

1 xdebug.dump.GET=*
2 xdebug.dump.SERVER=REMOTE_ADDR

在代碼中經過調用xdebug_debug_zval()方法打印出GET下的全部變量信息以及SERVER['REMOTE_ADDR']變量信息。瀏覽器

array xdebug_get_declared_vars()
返回一個數組,包含當前做用域下的全部變量名稱,須要打開xdebug_collect.vars配置。

array xdebug_get_function_stack()
一次打印出出調用xdebug_get_function_stack()方法所在的方法的全部方法調用信息。

integer xdebug_get_stack_depth()
返回當前棧的深度,main()深度爲0

xdebug跟蹤

xdebug能夠將文件的運行流程及狀況輸出到日至文件中,經過訪問這寫文件,能夠獲取項目代碼的運行流程以及相關一些信息,如內存使用率,內存峯值,執行時間等等。
輸出到日至中的書寫格式能夠分爲三種:易於閱讀的格式,機器容易解析的格式以及HTML格式,能夠經過xdebug.trace_format屬性進行控制,其值有一下三種:
1 shows a human readable indented trace file with: time indexmemory usagememory delta (if the settingxdebug.show_mem_delta is enabled), levelfunction namefunction parameters (if the settingxdebug.collect_params is enabled), filename and line number.
2 writes a computer readable format which has two different records. There are different records for entering a stack frame, and leaving a stack frame. The table below lists the fields in each type of record. Fields are tab separated.
3 writes a trace formatted in (simple) HTML.
一樣,輸出結果也會受到其餘一些配置選項的影響,如xdebug.collect_paramsxdebug.collect_returnxdebug.collect_assignments

爲VIM添加解析日至文件的語法高亮功能:
首先將源代碼文件夾下的contrib/xt.vim複製 ~/.vim/syntax目錄下
而後編輯 ~/.vim/filetype.vim 並加入一下代碼:

1 augroup filetypedetect
2 au BufNewFile,BufRead *.xt  setf xt
3 augroup END

此時在使用vim打開生成的日誌文件,便可看見對日誌文件的格式化和高亮顯示。

代碼跟蹤相關配置選項:
xdebug.auto_trace
boolean類型,默認值0。用於設定在腳本運行前是否自動跟蹤方法的調用信息。

xdebug.collect_assignments

xdebug.collect_return
boolean類型,默認值0。用於設定是否返回調用方法的返回值。

xdebug.show_mem_delta
boolean類型,默認值0。若是啓用該選項,而且輸出格式爲易於閱讀式,則會在日誌文件中顯示調用兩個方法之間的內存使用差別狀況。

xdebug.trace_enable_trigger
boolean類型,默認值0。若是開啓該選項,能夠經過向POST或GET傳遞XDEBUG_TRACE參數來啓用系統跟中功能,或者設定一個名爲XDEBUG_TRACE的cookie信息,爲了防止每次請求都會生成一個日誌文件,須要將xdebug.auto_track設置爲0。

xdebug.trace_format

xdebug.trace_options
boolean類型,默認值0。若是啓用該選項,則以後的請求生成的日誌信息會追加到日誌文件中而不是替換當前日誌文件中的內容。

xdebug.trace_output_dir
字符串類型,用於設定保存日誌文件的路徑信息

xdebug.trace_output_name
用於設定生成的日誌文件的名字。

 

利用xdebug檢測項目性能

xdebug提供了一個叫profiler的功能,能夠用來檢測項目的性能,以便可以找出項目的瓶頸,使用該功能,首先須要瞭解一些配置參數:

xdebug.profiler_enable
boolean類型,默認值0。用於設定是否開啓生成報告文件,若是設定爲1,每次請求都會生成一個性能報告文件。

xdebug.profiler_enable_trigger
boolean類型,默認值0。若是開啓該選項,則在每次請求中若是GET/POST或cookie中包含XDEBUG_PROFILE變量名,則纔會生成性能報告文件(前提是必須關閉xdebug.profiler_enable選項,不然該選項不起做用)。

xdebug.profiler_output_dir
字符串類型。用於設定生成的報告文件的存放的路徑。

xdebug.profiler_output_name
字符串類型。用於設定生成的報告文件的名字,如cachegrind.out.%t.%p

查看生成的性能分析文件
能夠經過KCacheGrind工具用來打開生成的報告文件,ubuntu下安裝該工具:

1 sudo apt-get install kcachegrind

 

或者使用webgrind,網頁版的KCacheGrind。
修改webgrind/config.php下的$storageDir屬性='./tmp';將生成的圖片文件保存到webgrind/tmp目錄下而不是/tmp下。
修改$dotExecutable='dot';

在上述說到的生成方法跟蹤報告和系統性能報告,大部分時候會選擇手動選擇是否生成報告文件,即開啓*_enable_trigger選項,這是當須要生成報告時,經過手動添加須要傳遞的參數來生成報告文件。
可經過向瀏覽器添加xdebug插件來快速設定這些選項:
chrome:https://chrome.google.com/extensions/detail/eadndfjplgieldjbigjakmdgkmoaaaoc.
firefox:https://addons.mozilla.org/en-US/firefox/addon/58688/.

 

 
分類:  PHP
相關文章
相關標籤/搜索