xdebug.auto_trace
類型:
布爾值,默認值:0
xdebug.cli_color
類型:整數,默認值:0,在Xdebug> = 2.2中引入
若是此設置爲1,則Xdebug將在CLI模式下和輸出爲tty時爲var_dumps和堆棧跟蹤輸出着色。在Windows上, 須要安裝ANSICON工具。chrome
若是設置爲2,則Xdebug將始終爲var_dumps和堆棧跟蹤着色,不管它是鏈接到tty仍是安裝了ANSICON。在這種狀況下,您最終可能會看到轉義碼。shell
有關更多信息,請參閱此文章。apache
xdebug.collect_assignments
類型:布爾值,默認值:0,在Xdebug> = 2.1中引入
此設置默認爲0,控制Xdebug是否應向函數跟蹤添加變量賦值。
從Xdebug 2.6開始,=&
還包括了by-var()賦值。
xdebug.collect_includes
類型:布爾值,默認值:1
此設置默認爲1,控制Xdebug是否應將include(),include_once(),require()或require_once()中使用的文件名寫入跟蹤文件。
xdebug.collect_params
類型:整數,默認值:0
此設置默認爲0,控制Xdebug是否應該在函數跟蹤或堆棧跟蹤中記錄函數調用時收集傳遞給函數的參數。
該設置默認爲0,由於對於很是大的腳本,它可能使用大量內存,所以沒法運行巨大的腳本。您能夠最安全地打開此設置,可是在腳本中可能會出現一些問題,其中包含大量函數調用和/或大量數據結構做爲參數。Xdebug 2不會因內存使用量增長而出現此問題,由於它永遠不會將此信息存儲在內存中。相反,它只會被寫入磁盤。這意味着您須要查看磁盤使用狀況。
此設置能夠有四個不一樣的值。對於每一個值,顯示不一樣數量的信息。您將在下面看到每一個值提供的信息。另請參閱Stack Traces功能的介紹,以 獲取一些屏幕截圖。
1在PHP的CLI版本,它不會有刀尖,也不在輸出文件。
xdebug.collect_return
類型:布爾值,默認值:0
xdebug.collect_vars
類型:布爾值,默認值:0
xdebug.coverage_enable
類型:布爾值,默認值:1,在Xdebug> = 2.2中引入
xdebug.default_enable
類型:布爾值,默認值:1
xdebug.dump。*
類型:字符串,默認值:空
*能夠是COOKIE,FILES,GET,POST,REQUEST,SERVER,SESSION中的任何一個。當出現錯誤狀況時,這七個設置控制來自超全局的數據。
這些php.ini設置中的每個均可以包含來自此超全局轉儲的變量的逗號分隔列表,或者*
包含全部變量。確保在此設置中不添加空格。
要在發生錯誤時轉儲REMOTE_ADDR和REQUEST_METHOD以及全部GET參數,請添加如下設置:
xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
xdebug.dump.GET = *
xdebug.dump_globals
類型:布爾值,默認值:1
當此設置設置爲時
true
,Xdebug會將經過
xdebug.dump。*
配置的超級全局變量的值添加到屏幕上的堆棧跟蹤和錯誤日誌(若是已啓用)。
xdebug.dump_once
類型:布爾值,默認值:1
控制是否應該在全部錯誤狀況(設置爲0)或僅在第一個(設置爲1)上轉儲超全局的值。
xdebug.dump_undefined
類型:布爾值,默認值:0
若是要從超全局轉儲未定義的值,則應將此設置設置爲1,不然將其設置爲0。
xdebug.extended_info
類型:整數,默認值:1
控制Xdebug是否應該爲PHP解析器強制執行'extended_info'模式; 這容許Xdebug使用遠程調試器執行文件/行斷點。在跟蹤或分析腳本時,您一般但願關閉此選項,由於PHP生成的oparray將增長大約三分之一的大小,從而減慢腳本速度。沒法使用ini_set()在腳本中設置此設置,但僅在php.ini中設置。
xdebug.file_link_format
類型:字符串,默認值:,在Xdebug中引入> = 2.1
此設置肯定在使用文件名的堆棧跟蹤顯示中生成的連接的格式。這容許IDE設置連接協議,經過單擊Xdebug在堆棧跟蹤中顯示的文件名,能夠直接轉到行和文件。示例格式可能以下所示:
myide://%F @%L
可能的格式說明符是:
對於各類IDE / OS,有一些說明如何使這項工做:
Linux上的Firefox
Windows和netbeans
- 建立文件
netbeans.bat
並將其保存在您的路徑中(C:\Windows
將起做用): @echo關閉
setlocal enableextensions enabledelayedexpansion
設置NETBEANS =%1
設置FILE =%~2
%NETBEANS% - nosplash --console suppress --open「%FILE:~19%」
nircmd win激活進程netbeans.exe
注意:若是沒有,請刪除最後一行nircmd
。
- 將如下代碼保存爲
netbeans_protocol.reg
: Windows註冊表編輯器版本5.00
[HKEY_CLASSES_ROOT \ netbeans的]
「網址協議」=「」
@ =「URL:Netbeans協議」
[HKEY_CLASSES_ROOT \ netbeans的\的DefaultIcon]
@ =「\」C:\\ Program Files \\ NetBeans 7.1.1 \\ bin \\ netbeans.exe,1 \「」
[HKEY_CLASSES_ROOT \ netbeans的\殼]
[HKEY_CLASSES_ROOT \ netbeans的\殼\開放]
[HKEY_CLASSES_ROOT \ netbeans的\殼\開放\命令]
@ =「\」C:\\ Windows \\ netbeans.bat \「\」C:\\ Program Files \\ NetBeans 7.1.1 \\ bin \\ netbeans.exe \「\」%1 \「」
注意:確保將路徑更改成Netbeans(兩次),以及netbeans.bat
批處理文件,若是您將其保存在其餘位置C:\Windows\
。
- 雙擊該
netbeans_protocol.reg
文件將其導入註冊表。
- 將xdebug.file_link_format設置爲
xdebug.file_link_format = "netbeans://open/?f=%f:%l"
xdebug.filename_format
類型:字符串,默認值:...%s%n,在Xdebug中引入> = 2.6
此設置肯定Xdebug ...%s%n
經過重載的xdebug_var_dump()(默認值 :)在HTML堆棧跟蹤(默認值:)和位置信息中呈現文件名的格式%f
。
此表中列出了可能的格式說明符。示例輸出根據完整路徑呈現 /var/www/vendor/mail/transport/mta.php
。
符 |
含義 |
示例輸出 |
%一種 |
Ancester:兩個目錄元素和文件名 |
mail/transport/mta.php |
%F |
完整路徑 |
/var/www/vendor/mail/transport/mta.php |
%N |
名稱:僅文件名 |
mta.php |
%p |
父:一個目錄元素和文件名 |
transport/mta.php |
%S |
目錄分隔符 |
\ 在Linux,OSX和其餘類Unix系統上,/ 在Windows上 |
xdebug.force_display_errors
類型:int,默認值:0,在Xdebug中引入> = 2.3
xdebug.force_error_reporting
類型:int,默認值:0,在Xdebug中引入> = 2.3
xdebug.halt_level
類型:int,默認值:0,在Xdebug中引入> = 2.3
此設置容許您配置一個掩碼,用於肯定是否以及哪些通知和/或警告轉換爲錯誤。您能夠配置由PHP生成的通知和警告,以及您本身生成的通知和警告(經過trigger_error())。例如,要將strlen()(不帶參數)的警告轉換爲錯誤,您能夠執行如下操做:
ini_set('xdebug.halt_level',E_WARNING);
的strlen();
回聲「嗨!\ n」;
而後,這將致使顯示錯誤消息和腳本的停止。echo "Hi!\n";
不會被執行。
該設置是一個位掩碼,所以要將全部通知和警告轉換爲全部應用程序的錯誤,您能夠在php.ini中設置:
xdebug.halt_level = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE
位掩碼僅支持上面提到的四個級別。
xdebug.idekey
類型:字符串,默認值:* complex *
控制哪些IDE Key Xdebug應傳遞給DBGp調試器處理程序。默認值基於環境設置。首先查閱環境設置DBGP_IDEKEY,而後是USER和最後一個USERNAME。默認設置爲找到的第一個環境變量。若是找不到任何設置,則設置爲默認值''。若是設置了此設置,它將始終覆蓋環境變量。
xdebug.manual_url
類型:字符串,默認值:http://www.php.net,在Xdebug <2.2.1中引入
這是從函數跟蹤和錯誤消息到消息中函數的手冊頁的連接的基本URL。建議將此設置設置爲使用最近的鏡像。
xdebug.max_nesting_level
類型:整數,默認值:256
控制無限遞歸保護的保護機制。此設置的值是在停止腳本以前容許的嵌套函數的最大級別。
在Xdebug 2.6以前,若是超出,這將產生致命的異常。從Xdebug 2.6及更高版本開始,將引起「 錯誤 」異常。
在Xdebug 2.3以前,默認值爲100
。
xdebug.max_stack_frames
類型:整數,默認值:-1,在Xdebug中引入> = 2.3
控制堆棧跟蹤中顯示的堆棧幀數,在PHP錯誤堆棧跟蹤期間在命令行上以及在HTML跟蹤的瀏覽器中顯示。
xdebug.overload_var_dump
類型:布爾值,默認值:2,在Xdebug> 2.1中引入
默認狀況下,當html_errors php.ini設置爲1
或時,Xdebug會使用本身的改進版本重載var_dump()以顯示變量 2
。若是你不想這樣,你能夠將此設置設置爲0
,但首先檢查是否關閉html_errors並不聰明。
您還能夠2
將此設置用做值。除了很好地格式化var_dump()輸出外,它還會在輸出中添加文件名和行號。該xdebug.file_link_format設置也很尊敬。(Xdebug 2.3中的新功能)
在Xdebug 2.4以前,此設置的默認值爲 1
。
xdebug.profiler_aggregate
類型:整數,默認值:0
當此設置設置爲1時,將爲多個請求寫入一個探查器文件。能夠瀏覽多個頁面或從新加載頁面以得到全部請求的
平均值
。該文件將被命名
.cachegrind.aggregate
。您須要移動此文件以獲取另外一輪聚合數據。
xdebug.profiler_append
類型:整數,默認值:0
xdebug.profiler_enable
類型:整數,默認值:0
xdebug.profiler_enable_trigger
類型:整數,默認值:0
xdebug.profiler_enable_trigger_value
類型:字符串,默認值:「」,在Xdebug中引入> = 2.3
xdebug.profiler_output_dir
鍵入:字符串,默認值:/ tmp
將編譯探測器輸出的目錄,確保將運行PHP的用戶具備對該目錄的寫入權限。沒法使用ini_set()在腳本中設置此設置。
xdebug.profiler_output_name
鍵入:字符串,默認值:cachegrind.out。%p
xdebug.remote_addr_header
類型:字符串,默認值:「」,在Xdebug中引入> = 2.4
xdebug.remote_autostart
類型:布爾值,默認值:0
一般,您須要使用特定的HTTP GET / POST變量來啓動遠程調試(請參閱
遠程調試
)。當此設置設置爲1時,即便GET / POST / COOKIE變量不存在,Xdebug也將始終嘗試啓動遠程調試會話並嘗試鏈接到客戶端。
xdebug.remote_connect_back
類型:布爾值,默認值:0,在Xdebug> = 2.1中引入
若是啓用,則忽略xdebug.remote_host設置,Xdebug將嘗試鏈接到發出HTTP請求的客戶端。它檢查$ _SERVER ['HTTP_X_FORWARDED_FOR']和$ _SERVER ['REMOTE_ADDR']變量以找出要使用的IP地址。
若是配置了xdebug.remote_addr_header,則將在$ _SERVER ['HTTP_X_FORWARDED_FOR']和$ _SERVER ['REMOTE_ADDR']變量以前檢查具備已配置名稱的$ SERVER變量。
此設置不適用於經過CLI進行調試,由於$ SERVER標頭變量在那裏不可用。
請注意,沒有可用的過濾器,任何能夠鏈接到Web服務器的人均可以啓動調試會話,即便他們的地址與xdebug.remote_host不匹配 。
xdebug.remote_cookie_expire_time
類型:整數,默認值:3600,在Xdebug> = 2.1中引入
此設置可用於經過會話cookie增長(或減小)遠程調試會話保持活動的時間。
xdebug.remote_enable
類型:布爾值,默認值:0
xdebug.remote_handler
鍵入:字符串,默認值:dbgp
能夠是'php3',它選擇舊的PHP 3樣式調試器 輸出,'gdb',它啓用GDB,如調試器接口或'dbgp' - 調試器協議。DBGp協議是惟一受支持的協議。
注意:Xdebug 2.1及更高版本僅支持'dbgp'做爲協議。
xdebug.remote_host
鍵入:字符串,默認值:localhost
xdebug.remote_log
類型:字符串,默認值:
若是設置爲值,則將其用做記錄全部遠程調試器通訊的文件的文件名。該文件始終以append-mode打開,所以默認狀況下不會被覆蓋。沒有可用的併發保護。該文件的格式以下所示:
登陸於2007-05-27 14:28:15開放
- > <init xmlns =「urn:debugger_protocol_v1」xmlns:xdebug =「http://xdebug.org/dbgp/x ... ight> </ init>
< - step_into -i 1
- > <response xmlns =「urn:debugger_protocol_v1」xmlns:xdebug =「http://xdebug.org/db ...> </ response>
xdebug.remote_mode
鍵入:字符串,默認值:req
選擇啓動調試鏈接的時間。此設置能夠有兩個不一樣的值:
-
REQ
-
一旦腳本啓動,Xdebug將嘗試鏈接到調試客戶端。
-
JIT
-
一旦出現錯誤狀況,Xdebug將僅嘗試鏈接到調試客戶端。
xdebug.remote_port
類型:整數,默認值:9000
Xdebug嘗試在遠程主機上鍊接的端口。端口9000是客戶端和捆綁的調試客戶端的默認端口。因爲許多客戶端使用此端口號,所以最好不要更改此設置。
xdebug.remote_timeout
類型:整數,默認值:200,在Xdebug中引入> = 2.6
Xdebug在IDE上等待確認傳入調試鏈接的時間量(以毫秒爲單位)。在大多數狀況下,默認值200 ms應該足夠了。若是您常常遇到調試請求丟失,多是由於您有一個高延遲網絡,或遠離IDE的開發盒,或者防火牆速度慢,那麼您能夠增長此值。
請注意,增長此值可能意味着在Xdebug嘗試創建鏈接但您的IDE未偵聽時,您的請求彷佛「掛起」。
xdebug.scream
類型:布爾值,默認值:0,在Xdebug> = 2.1中引入
若是此設置爲1,則Xdebug將禁用@(關閉)運算符,以便再也不隱藏通知,警告和錯誤。
xdebug.show_error_trace
類型:整數,默認值:0,在Xdebug> = 2.4中引入
當此設置設置爲1時,只要出現錯誤,Xdebug就會顯示堆棧跟蹤 - 即便實際捕獲到此錯誤。
xdebug.show_exception_trace
類型:整數,默認值:0
當此設置設置爲1時,Xdebug將在引起異常或錯誤時顯示堆棧跟蹤 - 即便實際捕獲到此異常或錯誤。
PHP 7中引入了錯誤「異常」。
xdebug.show_local_vars
類型:整數,默認值:0
當此設置設置爲某個值時!= 0 Xdebug在錯誤狀況下生成的堆棧轉儲也將顯示最頂層範圍內的全部變量。請注意,這可能會生成大量信息,所以默認狀況下處於關閉狀態。
xdebug.show_mem_delta
類型:整數,默認值:0
當此設置設置爲某個值時!= 0 Xdebug的人類可讀生成的跟蹤文件將顯示函數調用之間的內存使用量差別。若是Xdebug配置爲生成計算機可讀的跟蹤文件,那麼它們將始終顯示此信息。
xdebug.trace_enable_trigger
類型:布爾值,默認值:0,在Xdebug> = 2.2中引入
xdebug.trace_enable_trigger_value
類型:字符串,默認值:「」,在Xdebug中引入> = 2.3
xdebug.trace_format
類型:整數,默認值:0
跟蹤文件的格式。
值 |
描述 |
0 |
顯示一我的類可讀的縮進跟蹤文件,其中包括: 時間索引,內存使用狀況,內存增量(若是啓用了設置xdebug.show_mem_delta),級別,函數名稱, 函數參數(若是啓用了設置xdebug.collect_params), 文件名和行號。 |
1 |
寫一種具備兩種不一樣記錄的計算機可讀格式。輸入堆棧幀並留下堆棧幀有不一樣的記錄。下表列出了每種記錄類型中的字段。字段按製表符分隔。 |
2 |
寫一個用(簡單)HTML格式化的跟蹤。 |
計算機化格式的字段:
記錄類型 |
1 |
2 |
3 |
4 |
五 |
6 |
7 |
8 |
9 |
10 |
11 |
12 - ...... |
條目 |
水平 |
功能# |
老是'0' |
時間指數 |
內存使用狀況 |
功能名稱 |
用戶定義的(1)或內部函數(0) |
包含/要求文件的名稱 |
文檔名稱 |
電話號碼 |
沒有。參數 |
參數(與字段11中指定的數量同樣多) - 製表符分隔 |
出口 |
水平 |
功能# |
老是'1' |
時間指數 |
內存使用狀況 |
空 |
返回 |
水平 |
功能# |
老是'R' |
空 |
回報價值 |
空 |
有關示例,請參閱功能跟蹤的介紹。
xdebug.trace_options
類型:整數,默認值:0
設置爲「1」時,將追加跟蹤文件,而不是在後續請求中覆蓋。
xdebug.trace_output_dir
鍵入:字符串,默認值:/ tmp
將寫入跟蹤文件的目錄,確保將運行PHP的用戶具備對該目錄的寫入權限。
xdebug.trace_output_name
類型:字符串,默認值:trace。%c
此設置肯定用於將跟蹤轉儲到的文件的名稱。該設置指定格式說明符的格式,與sprintf()和strftime()很是類似。有幾種格式說明符可用於格式化文件名。始終會自動添加「.xt」擴展名。
可能的格式說明符是:
符 |
含義 |
示例格式 |
示例文件名 |
%C |
當前工做目錄的crc32 |
跟蹤%C |
trace.1258863198.xt |
%p |
PID |
跟蹤。%P |
trace.5174.xt |
%R |
隨機數 |
跟蹤。%R |
trace.072db0.xt |
%S |
腳本名稱2 |
cachegrind.out%S |
cachegrind.out._home_httpd_html_test_xdebug_test_php |
%T |
時間戳(秒) |
追查。%T |
trace.1179434742.xt |
%u |
時間戳(微秒) |
跟蹤。%u |
trace.1179434749_642382.xt |
%H |
$ _ SERVER [ 'HTTP_HOST'] |
跟蹤。%H |
trace.kossu.xt |
%R |
$ _ SERVER [ 'REQUEST_URI'] |
跟蹤。%R |
trace._test_xdebug_test_php_var = 1_var2 = 2.xt |
%U |
$ _SERVER ['UNIQUE_ID'] 3 |
跟蹤。%U |
trace.TRX4n38AAAEAAB9gBFkAAAAB.xt |
%S |
session_id(若是設置,則來自$ _COOKIE) |
追查。%S |
trace.c70c1ec2375af58f74b390bbdd2a679d.xt |
%% |
字面% |
跟蹤。%% |
跟蹤%%。XT |
2此版本僅適用於自Xdebug 2.6以來的跟蹤文件名。
3版本2.2中的新功能。這個是由Apache的mod_unique_id模塊設置的
xdebug.var_display_max_children
類型:整數,默認值:128
xdebug.var_display_max_data
類型:整數,默認值:512
xdebug.var_display_max_depth
類型:整數,默認值:3
控制使用xdebug_var_dump(), xdebug.show_local_vars或經過函數跟蹤顯示變量時,有多少嵌套級別的數組元素和對象屬性。
您能夠選擇的最大值是1023.您還可使用-1做爲值來選擇此最大數字。
此設置對經過「 遠程調試」功能發送給客戶端的子節點數沒有任何影響。
配置舉例
php.ini中:
;pecl install xdebug-2.4.1
[xdebug]
zend_extension=/usr/local/sinawap/apps/php-cms-5.4.45/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
xdebug.remote_enable = On
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "10.222.22..."#修改下
xdebug.remote_port = 9000
xdebug.idekey = IDEA
xdebug.profiler_output_dir = "/data1/profiler"
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_enable_trigger_value=SINA_SCP
xdebug.trace_enable_trigger = 1
xdebug.trace_enable_trigger_value=SINA_SCP
xdebug.trace_output_dir=/data1/profiler
xdebug.show_mem_delta=1
xdebug.collect_params=4
xdebug.collect_return=1
xdebug.trace_format=1
配置完成以後重啓 php-fpm
安裝 xdebug 工具
安裝 chrome 擴展 Xdebug helper
啓用 Xdebug helper 的 profiler 工具
刷新頁面, 查看設定的文件夾
在上邊設定的文件夾中會生成 profiler 文件
使用工具來分析 profiler 文件
這裏我使用 phpstorm 的分析工具來查看
Tools > Analyze Xdebug Profiler Snapshot
選擇生成的 輸出文件, 能夠看到文件的解析信息, 這個對於分析本身寫的php代碼會有很大益處
使用IDEA/PHPStorm來debug
設置斷點
按紅線內設置
RUN->"Start listening for PHP Debug Connection"
選擇「Debug」
選擇以前 斷點的文件
開始 debug
使用Webgrind分析profile
安裝、使用: https://github.com/jokkedk/webgrind