摘要:默認(rèn)關(guān)閉如果該設(shè)置為,那么將禁用關(guān)閉操作符,以便不再隱藏通知警告和錯(cuò)誤。將寫入垃圾收集統(tǒng)計(jì)信息輸出的目錄,確保將運(yùn)行的用戶具有對該目錄的寫入權(quán)限。此設(shè)置確定用于將垃圾回收統(tǒng)計(jì)信息轉(zhuǎn)儲到的文件的名稱。
前言
Xdebug是PHP的擴(kuò)展,用于協(xié)助調(diào)試和開發(fā)。
它包含一個(gè)用于IDE的調(diào)試器
它升級了PHP的var_dump()函數(shù)
它為通知,警告,錯(cuò)誤和異常添加了堆棧跟蹤
它具有記錄每個(gè)函數(shù)調(diào)用和磁盤變量賦值的功能
它包含一個(gè)分析器
它提供了與PHPUnit一起使用的代碼覆蓋功能。
猿生必備的工具。
但不推薦在生產(chǎn)環(huán)境中使用xdebug,因?yàn)樗亓恕?/p>
安裝
PECL 安裝
pecl install xdebug zend_extension="/usr/local/php/modules/xdebug.so"源碼包安裝
https://xdebug.org/download.php 尋找對應(yīng)的包
wget xxx.gz ./configure make && make install zend_extension="/usr/local/php/modules/xdebug.so"Docker安裝
以下為php dockerfile內(nèi)部分內(nèi)容
RUN pecl install xdebug RUN echo "zend_extension=xdebug.so" >> /usr/local/etc/php/conf.d/xdebug.ini工作原理
IDE(如PHPStorm)已經(jīng)集成了一個(gè)遵循BGDP的XDebug插件,當(dāng)開啟它的時(shí)候, 會在本地開一個(gè)XDebug調(diào)試服務(wù),監(jiān)聽在調(diào)試器中所設(shè)置的端口上,默認(rèn)是9000,這個(gè)服務(wù)就會監(jiān)聽所有到9000端口的鏈接。
當(dāng)瀏覽器發(fā)送一個(gè)帶 XDEBUG_SESSION_START 的參數(shù)的請求到服務(wù)器時(shí),服務(wù)器接受后將其轉(zhuǎn)到后端的php處理,如果php開啟了XDebug模塊,則會將debug信息轉(zhuǎn)發(fā)到客戶端IP的IDE的調(diào)試端口上。
當(dāng)參數(shù)或者cookie信息中不帶 XDEBUG_SESSION_START ,則不會啟動調(diào)試。這就為后續(xù)在瀏覽器中添加開關(guān)提供了可能。
基本配置一般情況下,你都只需了解,無需修改。
名稱 | 類型 | 默認(rèn)值 | 注解 |
---|---|---|---|
xdebug.default_enable | boolean | 1 | 堆棧跟蹤,默認(rèn)開啟,是xdebug基礎(chǔ)功能之一 |
xdebug.force_display_errors | integer | 0 | 默認(rèn)關(guān)閉,如果這個(gè)設(shè)置設(shè)置為1,那么無論P(yáng)HP的display_errors設(shè)置為什么,都將始終顯示錯(cuò)誤。 |
xdebug.force_error_reporting | integer | 0 | 默認(rèn)關(guān)閉,允許強(qiáng)制顯示某些錯(cuò)誤 |
xdebug.halt_level | integer | 0 | 默認(rèn)關(guān)閉,設(shè)置接收某些指定錯(cuò)誤 |
xdebug.max_nesting_level | integer | 256 | 控制無限遞歸(死循環(huán))的保護(hù)機(jī)制,默認(rèn)是256 |
xdebug.max_stack_frames | integer | -1 | 控制有多少堆棧幀顯示在堆棧跟蹤中,在PHP錯(cuò)誤堆棧跟蹤的命令行中,以及在瀏覽器中顯示HTML跟蹤。 |
xdebug.scream | boolean | 0 | 默認(rèn)關(guān)閉,如果該設(shè)置為1,那么Xdebug將禁用@(關(guān)閉)操作符,以便不再隱藏通知、警告和錯(cuò)誤。 |
具體內(nèi)容請移步官網(wǎng) https://xdebug.org/docs/basic
打印配置Xdebug將替換PHP的var_dump()函數(shù)來顯示變量。Xdebug版本包含了不同類型的不同顏色,并對數(shù)組元素/對象屬性的數(shù)量、最大深度和字符串長度進(jìn)行了限制。還有一些其他函數(shù)也處理變量顯示。
名稱 | 類型 | 默認(rèn)值 | 注解 |
---|---|---|---|
xdebug.cli_color | integer | 0 | cli模式下輸入結(jié)果是否設(shè)置顏色 |
xdebug.overload_var_dump | boolean | 2 | 是否允許xdebug重載var_dump函數(shù) |
xdebug.var_display_max_children | integer | 128 | var_dump 對數(shù)組對象子級的顯示層數(shù)限制 |
xdebug.var_display_max_data | integer | 512 | var_dump 對結(jié)果長度的限制 |
xdebug.var_display_max_depth | integer | 3 | var_dump 對默認(rèn)顯示嵌套的層數(shù)的限制 |
具體內(nèi)容請移步官網(wǎng) https://xdebug.org/docs/display
堆棧跟蹤配置當(dāng)Xdebug被激活時(shí),當(dāng)PHP決定顯示一個(gè)通知、警告、錯(cuò)誤等時(shí),它將顯示一個(gè)堆棧跟蹤。堆棧跟蹤顯示的信息以及它們的顯示方式可以配置為適合您的需要。
名稱 | 類型 | 默認(rèn)值 | 注解 |
---|---|---|---|
xdebug.cli_color | integer | 0 | cli模式下輸入結(jié)果是否設(shè)置顏色 |
xdebug.collect_includes | boolean | 1 | 控制Xdebug是否應(yīng)該將include()、include_once()、require()或require_once()中的文件名寫入跟蹤文件 |
xdebug.collect_params | integer | 0 | 該設(shè)置默認(rèn)為0,控制當(dāng)函數(shù)跟蹤或堆棧跟蹤記錄函數(shù)調(diào)用時(shí),Xdebug是否應(yīng)該收集傳遞給函數(shù)的參數(shù) |
xdebug.collect_vars | boolean | 0 | 這個(gè)設(shè)置告訴Xdebug在特定范圍內(nèi)使用哪些變量。由于Xdebug必須逆向工程PHP的操作碼數(shù)組,這種分析可能相當(dāng)緩慢。對于使用xdebug.collect_params,此設(shè)置不會記錄不同變量的值。只有當(dāng)您希望使用xdebug_get_declared_vars()時(shí),才需要啟用此設(shè)置。 |
xdebug.dump.* | string | empty | * 可以是任何COOKIE、文件、GET、POST、REQUEST、SERVER、SESSION。這七個(gè)設(shè)置控制在發(fā)生錯(cuò)誤時(shí)顯示來自超全局變量的哪些數(shù)據(jù)。 |
xdebug.dump_globals | boolean | 1 | 當(dāng)該設(shè)置設(shè)置為true時(shí),Xdebug將添加通過Xdebug.dump配置的超級全局變量的值*到屏幕上的堆棧跟蹤和錯(cuò)誤日志。 |
xdebug.dump_once | boolean | 1 | 控制是否應(yīng)該在所有錯(cuò)誤情況(設(shè)置為0)上轉(zhuǎn)儲超全局變量的值,或只在第一個(gè)錯(cuò)誤情況下轉(zhuǎn)儲超全局變量的值(設(shè)置為1) |
xdebug.dump_undefined | boolean | 0 | 如果您想從超全局變量中轉(zhuǎn)儲未定義的值,您應(yīng)該將該設(shè)置設(shè)置為1,否則將其設(shè)置為0。 |
xdebug.file_link_format | string | 文件鏈接格式 |
具體內(nèi)容請移步官網(wǎng) https://xdebug.org/docs/stack...
函數(shù)調(diào)試配置Xdebug允許記錄所有函數(shù)調(diào)用,包括參數(shù)和以不同格式返回的值。
名稱 | 類型 | 默認(rèn)值 | 注解 |
---|---|---|---|
xdebug.auto_trace | boolean | 0 | 當(dāng)將此設(shè)置設(shè)置為ture時(shí),將在腳本運(yùn)行之前啟用函數(shù)調(diào)用的跟蹤 |
xdebug.collect_assignments | boolean | 0 | 該設(shè)置默認(rèn)為0,控制Xdebug是否應(yīng)該向函數(shù)跟蹤添加變量賦值。 |
xdebug.collect_includes | boolean | 1 | 該設(shè)置默認(rèn)為1,控制Xdebug是否應(yīng)該將include()、include_once()、require()或require_once()中的文件名寫入跟蹤文件。 |
xdebug.collect_params | integer | 0 | 該設(shè)置默認(rèn)為0,控制當(dāng)函數(shù)跟蹤或堆棧跟蹤記錄函數(shù)調(diào)用時(shí),Xdebug是否應(yīng)該收集傳遞給函數(shù)的參數(shù)。 |
xdebug.collect_return | boolean | 0 | 該設(shè)置默認(rèn)為0,控制Xdebug是否應(yīng)該將函數(shù)調(diào)用的返回值寫入跟蹤文件。 |
xdebug.show_mem_delta | integer | 0 | Xdebug生成的跟蹤文件將顯示函數(shù)調(diào)用之間內(nèi)存使用的差異 |
xdebug.trace_format | integer | 0 | 跟蹤文件的格式 |
xdebug.trace_options | integer | 0 | 當(dāng)設(shè)置為“1”時(shí),跟蹤文件將被附加到后面的請求中,而不是被覆蓋。 |
xdebug.trace_output_dir | string | /tmp | 寫入跟蹤文件的目錄,確保PHP運(yùn)行的用戶具有該目錄的寫權(quán)限。 |
具體內(nèi)容請移步官網(wǎng) https://xdebug.org/docs/execu...
垃圾收集統(tǒng)計(jì)信息Xdebug的內(nèi)置垃圾收集統(tǒng)計(jì)信息分析器允許您查明PHP內(nèi)部垃圾收集器何時(shí)觸發(fā)、它能夠清理多少變量、它花費(fèi)了多長時(shí)間以及實(shí)際釋放了多少內(nèi)存。
名稱 | 類型 | 默認(rèn)值 | 注解 |
---|---|---|---|
xdebug.gc_stats_enable | bool | false | 如果啟用此設(shè)置,則垃圾收集運(yùn)行的統(tǒng)計(jì)信息將自動收集到使用xdebug.gc_stats_output_dir設(shè)置的給定目錄中, 并使用由xdebug.gc_stats_output_name配置的自動生成的名稱。 |
xdebug.gc_stats_output_dir | string | /tmp | 將寫入垃圾收集統(tǒng)計(jì)信息輸出的目錄,確保將運(yùn)行PHP的用戶具有對該目錄的寫入權(quán)限。無法使用ini_set() 在腳本中設(shè)置此設(shè)置。 |
xdebug.gc_stats_output_name | string | gcstats.%p | 此設(shè)置確定用于將垃圾回收統(tǒng)計(jì)信息轉(zhuǎn)儲到的文件的名稱。該設(shè)置使用格式說明符指定格式,與sprintf() 和strftime() 非常相似。有幾種格式說明符可用于格式化文件名。 |
具體內(nèi)容請移步官網(wǎng) https://xdebug.org/docs/garba...
遠(yuǎn)程調(diào)試配置Xdebug為與運(yùn)行PHP腳本交互的調(diào)試器客戶機(jī)提供了一個(gè)接口。
名稱 | 類型 | 默認(rèn)值 | 注解 |
---|---|---|---|
xdebug.extended_info | integer | 1 | 控制Xdebug是否應(yīng)該為PHP解析器強(qiáng)制執(zhí)行"extended_info"模式; 這允許Xdebug使用遠(yuǎn)程調(diào)試器執(zhí)行文件/行斷點(diǎn)。在跟蹤或分析腳本時(shí),您通常希望關(guān)閉此選項(xiàng),因?yàn)镻HP生成的oparray將增加大約三分之一的大小,從而減慢腳本速度。無法使用ini_set()在腳本中設(shè)置此設(shè)置,但只能在php.ini中設(shè)置。 |
xdebug.idekey | string | complex | 控制哪些IDE Key Xdebug應(yīng)傳遞給DBGp調(diào)試器處理程序。則與客戶端通信的key |
xdebug.remote_addr_header | string | "" | 該值將用作$SERVER超全局?jǐn)?shù)組中的鍵,以確定用于查找用于“連接回”的IP地址或主機(jī)名的標(biāo)頭 |
xdebug.remote_autostart | boolean | 0 | 您需要使用特定的HTTP GET / POST變量來啟動遠(yuǎn)程調(diào)試 |
xdebug.remote_connect_back | boolean | 0 | 如果你不設(shè)置ip地址,就只能靠xdebug自己找了,Xdebug將嘗試連接到發(fā)出HTTP請求的客戶端。它檢查$_SERVER["HTTP_X_FORWARDED_FOR"]和$_SERVER["REMOTE_ADDR"]變量以找出要使用的IP地址 |
xdebug.remote_cookie_expire_time | integer | 3600 | 設(shè)置cookie的生命周期 |
xdebug.remote_enable | boolean | 0 | 是否開啟遠(yuǎn)程調(diào)試 |
xdebug.remote_handler | string | dbgp | 調(diào)試的通信協(xié)議 |
xdebug.remote_host | string | localhost | 調(diào)試的網(wǎng)絡(luò)地址,開啟了remote_connect_back后,當(dāng)前配置就無效了 |
xdebug.remote_log | string | 調(diào)試的日志 | |
xdebug.remote_port | integer | 9000 | 調(diào)試的端口 |
xdebug.remote_timeout | integer | 200 | 調(diào)試的通信鏈接的等待時(shí)間 |
具體內(nèi)容請移步官網(wǎng) https://xdebug.org/docs/remote
官方鏈接全部配置請移步官網(wǎng) https://xdebug.org/docs/all_s...
全部函數(shù)請移步官網(wǎng) https://xdebug.org/docs/all_f...
網(wǎng)絡(luò)上的配置DEBUG文章太雜太亂,在PHPSTROM跳來跳去的,實(shí)在讓人心煩意亂,本章重新整理描述。
配置其實(shí)在PHPSTROM中已經(jīng)出了很詳細(xì)的教程,是吧?只不過大部分人都會直接百度/Google,查詢是個(gè)好習(xí)慣,但要視情況而定。
Languages & Frameworks > PHP > Debug第一步
下載XDEBUG擴(kuò)展,本章開頭已經(jīng)講過了,這里不再闡述。
在安裝完成后,PHPSTROM提供了驗(yàn)證腳本。腳本地址為 https://gist.github.com/litzi...
正常情況下檢測成功的樣子是
看到這個(gè)你就可以放心的去debug了。
第二步裝個(gè)瀏覽器插件,用戶請求監(jiān)聽。這個(gè)東西唯一的作用就是方便了debug,正常如果不安裝的話你需要通過GET傳參 XDEBUG_SESSION_START=ID_KEY 才可以,安裝插件后就不需要了。
你可以自行選擇是否開啟debug,以下為瀏覽器插件列表
瀏覽器 | 下載 |
---|---|
Chrome | Xdebug Helper |
Firefox | The easiest Xdebug or Xdebug Helper |
Safari | Xdebug Toggler |
Opera | Xdebug launcher |
Internet Explorer | PhpStorm bookmarklets generator |
開啟監(jiān)聽即可。
你可以直接點(diǎn)擊圖片上的監(jiān)聽按鈕。
到現(xiàn)在為止,就配置好了IDE。
第四步創(chuàng)建DEBUG配置文件,根據(jù)每個(gè)項(xiàng)目都要配置。這步你跑不了。
你看,PHPSTORM非常人性化,在每一步都會給你出個(gè)簡單的教程來描述如何配置DEBUG。
添加一個(gè)Server和IDE key(xdebug.idekey) 就可以進(jìn)行調(diào)試了。
總結(jié)總結(jié)以下IDE配置DEBUG的步驟,實(shí)際很簡單。
下載安裝debug
驗(yàn)證是否通信正常
添加瀏覽器插件 (可省略)
配置運(yùn)行文件
愉快的debug
這里還要說明下,如果你是不需要訪問本機(jī)調(diào)試一些類或者代碼塊,你只需要在本機(jī)上安裝好XDEBUG,上述配置全部省略,直接點(diǎn)小蟲子圖標(biāo)即可調(diào)試。DEBUG端口默認(rèn)是9000,如果配置文件內(nèi)修改了,當(dāng)然在IDE內(nèi)也需要修改下。調(diào)試
介紹下實(shí)際DEBUG過程中PHPSTORM面板的按鈕都是做什么用的。當(dāng)你啟動監(jiān)聽后,你將會看到如下圖
根據(jù)上圖圖標(biāo)位置,以x,y坐標(biāo)的方式描述每個(gè)圖標(biāo)的功能。
圖標(biāo) | 位置 (x,y) | 功能 |
---|---|---|
0,0 | 重新執(zhí)行DEBUG (Rerun test.php) | |
0,1 | 跳轉(zhuǎn)到原調(diào)試文件 (Show execution point) | |
0,2 | 跳到下一行 (Step over) | |
0,3 | 執(zhí)行下一步 (Step info) | |
0,4 | 跳入庫、構(gòu)造函數(shù)等方法或類中 (Force Step Info) | |
0,5 | 執(zhí)行函數(shù)體或類方法,如果在最外層則結(jié)束本次調(diào)試 (Step out) | |
0,6 | 跳到當(dāng)前節(jié)點(diǎn)的下個(gè)斷點(diǎn) (Run to Cursor) | |
0,7 | 執(zhí)行修改變量或返回的結(jié)果用于二次調(diào)試(Evaluate arbitrary expression) | |
0,8 | 顯示值的地址 (Show Values Addresses) | |
0,9 | 是否顯示空的值 , 默認(rèn)是不顯示 | |
0,10 | 跳到下個(gè)斷點(diǎn) (Add method to skip list) | |
1,0 | 重新執(zhí)行DEBUG (Resume Program) | |
2,0 | 停止DEBUG(Step process) | |
3,0 | 查看和管理所有的斷點(diǎn) ( View and manage all breakpoints) | |
4,0 | 忽略所有斷點(diǎn) (Mute breakpoints) |
部分人在本機(jī)裝了Docker,容器中運(yùn)行這PHP,這個(gè)時(shí)候該如何進(jìn)行DEBUG呢?如果認(rèn)真看本篇文章,你會發(fā)現(xiàn)十分的簡單。本身XDEBUG就是遠(yuǎn)程調(diào)試。首先你要保證
容器做了端口映射到本機(jī)80
容器內(nèi)項(xiàng)目目錄做了磁盤掛載
將容器PHP XDEBUG 中
xdebug.remote_host=local_ip
即可,也不用擔(dān)心hosts文件的問題
本機(jī)IP = 127.0.0.1 = localhost
這樣配置完成后,就可以當(dāng)容器不存在,與本機(jī)調(diào)試一樣。
致謝感謝你看到這里,希望本章內(nèi)容可以幫到你,謝謝。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29402.html
摘要:那些瑣碎的知識點(diǎn)作者記錄的的很奇特很難記的知識點(diǎn)。易錯(cuò)知識點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過程中掌握的知識點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識...
新編html網(wǎng)頁設(shè)計(jì)從入門到精通共分為21章,全面系統(tǒng)地講解了html的發(fā)展歷史及4.0版的新特性、基本概念、設(shè)計(jì)原則、文件結(jié)構(gòu)、文件屬性標(biāo)記、用格式標(biāo)記進(jìn)行頁面排版、使用圖像裝飾頁面、超鏈接的使用、使用表格組織頁面、使用多媒體美化頁面、創(chuàng)建多框架頁面、動態(tài)網(wǎng)頁的制作、使用層疊樣式表(css)美化頁面、javascript語言、數(shù)組和字符串以及表達(dá)式與程序的流程控制等內(nèi)容。 本書適合作為培訓(xùn)學(xué)校的...
摘要:在中,選擇填寫你的項(xiàng)目的和等項(xiàng)目基本信息之后,在依賴中選擇之后。從入門到精通初識注解接口您的關(guān)注是我最大的動力 Spring Boot極大的簡化了java項(xiàng)目的開發(fā),在之前如果想要開發(fā)一個(gè)java項(xiàng)目,需要安裝tomcat或者其他容器插件。但是Spring?Boot內(nèi)部已經(jīng)集成了tomcat,因此項(xiàng)目的啟動異常的方便。而且Spring?Boot的開發(fā)中有很多默認(rèn)的配置,幫助我們省去了相...
摘要:本文章屬于爬蟲入門到精通系統(tǒng)教程第五講在爬蟲入門到精通第四講中,我們了解了如何下載網(wǎng)頁,這一節(jié)就是如何從下載的網(wǎng)頁中獲取我們想要的內(nèi)容萬能匹配文章的標(biāo)題文字我們要獲取的如上所示,假如我們要獲取文章的標(biāo)題這幾個(gè)文字,那么我們應(yīng)該怎么做呢我 本文章屬于爬蟲入門到精通系統(tǒng)教程第五講 在爬蟲入門到精通第四講中,我們了解了如何下載網(wǎng)頁,這一節(jié)就是如何從下載的網(wǎng)頁中獲取我們想要的內(nèi)容 萬能匹配 h...
閱讀 2533·2021-11-15 11:38
閱讀 2893·2021-11-02 14:44
閱讀 3830·2021-09-26 10:13
閱讀 3072·2021-08-13 15:02
閱讀 788·2019-08-30 15:56
閱讀 1469·2019-08-30 15:53
閱讀 2366·2019-08-30 13:01
閱讀 3239·2019-08-29 12:57