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


本節介紹Xdebug中可用的所有可用配置設置。


相關設置


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

xdebug.cli_color
類型:整數,默認值:0,在Xdebug> = 2.2中引入

如果此設置為1,則Xdebug將在CLI模式下和輸出為tty時為var_dumps和堆棧跟蹤輸出着色。在Windows上, 需要安裝ANSICON工具。

如果設置為2,則Xdebug將始終為var_dumps和堆棧跟蹤着色,無論它是連接到tty還是安裝了ANSICON。在這種情況下,您最終可能會看到轉義碼。

有關更多信息,請參閱此文章


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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM