成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

XDEBUG 從入門到精通

leejan97 / 3525人閱讀

摘要:默認(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...

PHPSTORM DEBUG

網(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)
其他 Docker PHP XDEBUG

部分人在本機(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

相關(guān)文章

  • PHP小知識點(diǎn)

    摘要:那些瑣碎的知識點(diǎn)作者記錄的的很奇特很難記的知識點(diǎn)。易錯(cuò)知識點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過程中掌握的知識點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識...

    hover_lew 評論0 收藏0
  • 新編html網(wǎng)頁設(shè)計(jì)入門精通 (龍馬工作室) pdf掃描版?

    新編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é)校的...

    荊兆峰 評論0 收藏0
  • Spring Boot入門精通-項(xiàng)目搭建

    摘要:在中,選擇填寫你的項(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)的配置,幫助我們省去了相...

    阿羅 評論0 收藏0
  • 爬蟲入門精通-網(wǎng)頁的解析(正則)

    摘要:本文章屬于爬蟲入門到精通系統(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...

    RiverLi 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<