php xdebug的配置、調試、跟蹤、調優、分析

本節介紹Xdebug中可用的全部可用配置設置。web


相關設置


xdebug.auto_trace
類型: 布爾值,默認值:0
當此設置設置爲on時,將在腳本運行以前啓用函數調用的跟蹤。這使得跟蹤 auto_prepend_file中的 代碼成爲可能

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功能的介紹,以 獲取一些屏幕截圖。

顯示的參數信息
0 沒有。
1 元素的類型和數量(fe string(6),array(8))。
2

元素的類型和數量,以及完整信息的工具提示1

3 完整變量內容(具備xdebug.var_display_max_childrenxdebug.var_display_max_dataxdebug.var_display_max_depth設置的限制
4 完整的變量內容和變量名稱。
PHP序列化變量內容,沒有名稱。(Xdebug 2.3中的新功能)

1在PHP的CLI版本,它不會有刀尖,也不在輸出文件。


xdebug.collect_return
類型:布爾值,默認值:0

此設置默認爲0,控制Xdebug是否應將函數調用的返回值寫入跟蹤文件。

對於計算機化的跟蹤文件(xdebug.trace_format = 1),這僅適用於Xdebug 2.3以上版本。


xdebug.collect_vars
類型:布爾值,默認值:0
此設置告訴Xdebug收集有關在特定範圍內使用哪些變量的信息。因爲Xdebug必須對PHP的操做碼陣列進行反向工程,所以這種分析可能很是緩慢。此設置不會記錄不一樣變量具備的值,使用 xdebug.collect_params 僅當您但願使用 xdebug_get_declared_vars()時, 才須要啓用此設置 

xdebug.coverage_enable
類型:布爾值,默認值:1,在Xdebug> = 2.2中引入
若是此設置設置爲0,則Xdebug將不會設置內部結構以容許代碼覆蓋。這大大加快了Xdebug的速度,但固然, Code Coverage Analysis 不起做用。

xdebug.default_enable
類型:布爾值,默認值:1
若是此設置爲1,則默認狀況下將在錯誤事件中顯示stacktraces。您可使用 xdebug_disable() 禁用代碼中的 堆棧跟蹤因爲這是Xdebug的基本功能之一,建議將此設置保留爲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

可能的格式說明符是:

含義
%F 文件名
%L 行號

對於各類IDE / OS,有一些說明如何使這項工做:

Linux上的Firefox

  • 打開about:config
  • 添加一個新的布爾設置「network.protocol-handler.expose.xdebug」並將其設置爲「false」
  • 將如下內容添加到shell腳本中~/bin/ff-xdebug.sh
    #!/ bin / sh的
     f =`echo $ 1 | cut -d @ -f 1 | sed's / xdebug:\ / \ ///'` l =`echo $ 1 | 切-d @ -f 2`
    
    添加到那個(取決於你是否有komodo,gvim或netbeans):
    • komodo $f -l $l
    • gvim --remote-tab +$l $f
    • netbeans "$f:$l"
  • 使腳本可執行 chmod +x ~/bin/ff-xdebug.sh
  • xdebug.file_link_format設置爲xdebug://%f@%l

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

若是將此設置設置爲,1不管PHP的display_errors設置如何,都將始終顯示錯誤 


xdebug.force_error_reporting
類型:int,默認值:0,在Xdebug中引入> = 2.3

此設置是一個位掩碼,如error_reporting該位掩碼將與error_reporting to dermine 表示的位掩碼邏輯OR運算,應顯示錯誤。此設置只能在php.ini中進行,並容許您強制顯示某些錯誤,不管應用程序使用ini_set()作什麼


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
當此設置設置爲1時,若是新請求映射到同一文件,則不會覆蓋探查器文件(取決於 xdebug.profiler_output_name 設置。而是將文件附加到新配置文件中。

xdebug.profiler_enable
類型:整數,默認值:0
啓用Xdebug的分析器,該分析器在 配置文件輸出目錄中 建立文件 KCacheGrind能夠讀取這些文件以可視化您的數據。沒法使用ini_set()在腳本中設置此設置。若是 要有 選擇地啓用探查器,請將xdebug.profiler_enable_trigger設置爲1  而不是 使用此設置。

xdebug.profiler_enable_trigger
類型:整數,默認值:0
當此設置設置爲1時,您可使用XDEBUG_PROFILE GET / POST參數觸發生成探查器文件,或者設置名爲XDEBUG_PROFILE的cookie。而後,這將將探查器數據寫入  定義的目錄 爲了防止探查器爲每一個請求生成配置文件,您須要將 xdebug.profiler_enable 設置 爲0.能夠經過 xdebug.profiler_enable_trigger_value 配置對觸發器自己的訪問

xdebug.profiler_enable_trigger_value
類型:字符串,默認值:「」,在Xdebug中引入> = 2.3
此設置可用於限制誰可使用 xdebug.profiler_enable_trigger中 概述的XDEBUG_PROFILE功能當從其空字符串的默認值更改時,cookie,GET或POST參數的值須要與此設置的共享密鑰集匹配,以便啓動探查器。

xdebug.profiler_output_dir
鍵入:字符串,默認值:/ tmp
將編譯探測器輸出的目錄,確保將運行PHP的用戶具備對該目錄的寫入權限。沒法使用ini_set()在腳本中設置此設置。

xdebug.profiler_output_name
鍵入:字符串,默認值:cachegrind.out。%p

此設置肯定用於將跟蹤轉儲到的文件的名稱。該設置指定格式說明符的格式,與sprintf()和strftime()很是類似。有幾種格式說明符可用於格式化文件名。

有關支持的說明符,請參閱xdebug.trace_output_name文檔。


xdebug.remote_addr_header
類型:字符串,默認值:「」,在Xdebug中引入> = 2.4
若是 xdebug.remote_addr_header 配置爲非空字符串,則該值將用做$ SERVER超全局數組中的鍵,以肯定用於查找用於「鏈接回」的IP地址或主機名的標頭。此設置僅與 xdebug.remote_connect_back 結合使用 ,不然將被忽略。

 


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是否應嘗試聯繫正在偵聽主機和端口的調試客戶端,並使用設置 xdebug.remote_host 和  xdebug.remote_port 進行設置 若是沒法創建鏈接,腳本將繼續,就像此設置爲0同樣。

xdebug.remote_handler
鍵入:字符串,默認值:dbgp

能夠是'php3',它選擇舊的PHP 3樣式調試器 輸出,'gdb',它啓用GDB,如調試器接口或'dbgp' - 調試器協議DBGp協議是惟一受支持的協議。

注意:Xdebug 2.1及更高版本僅支持'db​​gp'做爲協議。


xdebug.remote_host
鍵入:字符串,默認值:localhost

選擇運行調試客戶端的主機,您可使用主機名,IP地址或Unix域套接字的「unix:/// path / to / sock」。若是啓用了xdebug.remote_connect_back,忽略此設置

Xdebug 2.6中引入了對Unix域套接字的支持。


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中引入
當此設置設置爲1時,您可使用XDEBUG_TRACE GET / POST參數觸發跟蹤文件的生成,或者設置名爲XDEBUG_TRACE的cookie。而後,這將跟蹤數據寫入  定義的目錄 爲了防止Xdebug爲每一個請求生成跟蹤文件,您須要將 xdebug.auto_trace 設置 爲0.能夠經過 xdebug.trace_enable_trigger_value 配置對觸發器自己的訪問 

xdebug.trace_enable_trigger_value
類型:字符串,默認值:「」,在Xdebug中引入> = 2.3
這個設置能夠用來限制誰可使用的XDEBUG_TRACE功能中概述 xdebug.trace_enable_trigger 當從其空字符串的默認值更改時,cookie,GET或POST參數的值須要與此設置的共享密鑰集匹配,以便生成跟蹤文件。

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.11​​79434742.xt
%u 時間戳(微秒) 跟蹤。%u trace.11​​79434749_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_dump(), xdebug.show_local_vars或經過函數跟蹤顯示變量時,控制數組子項的數量和對象的屬性

要禁用任何限制,請使用-1做爲值。

此設置對經過「 遠程調試」功能發送給客戶端的子節點數沒有任何影響


xdebug.var_display_max_data
類型:整數,默認值:512

控制使用xdebug_var_dump(), xdebug.show_local_vars或經過函數跟蹤顯示變量時顯示的最大字符串長度

要禁用任何限制,請使用-1做爲值。

此設置對經過「 遠程調試」功能發送給客戶端的子節點數沒有任何影響


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

 

 

相關文章
相關標籤/搜索