国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

XDEBUG 從入門到精通

leejan97 / 3514人閱讀

摘要:默認關閉如果該設置為,那么將禁用關閉操作符,以便不再隱藏通知警告和錯誤。將寫入垃圾收集統計信息輸出的目錄,確保將運行的用戶具有對該目錄的寫入權限。此設置確定用于將垃圾回收統計信息轉儲到的文件的名稱。

前言

Xdebug是PHP的擴展,用于協助調試和開發。

它包含一個用于IDE的調試器

它升級了PHP的var_dump()函數

它為通知,警告,錯誤和異常添加了堆棧跟蹤

它具有記錄每個函數調用和磁盤變量賦值的功能

它包含一個分析器

它提供了與PHPUnit一起使用的代碼覆蓋功能。

猿生必備的工具。
但不推薦在生產環境中使用xdebug,因為他太重了。

安裝 PECL 安裝
pecl install xdebug
zend_extension="/usr/local/php/modules/xdebug.so"
源碼包安裝

https://xdebug.org/download.php 尋找對應的包

wget xxx.gz
./configure
make && make install
zend_extension="/usr/local/php/modules/xdebug.so"
Docker安裝

以下為php dockerfile內部分內容

RUN pecl install xdebug
RUN echo "zend_extension=xdebug.so" >> /usr/local/etc/php/conf.d/xdebug.ini
工作原理

IDE(如PHPStorm)已經集成了一個遵循BGDP的XDebug插件,當開啟它的時候, 會在本地開一個XDebug調試服務,監聽在調試器中所設置的端口上,默認是9000,這個服務就會監聽所有到9000端口的鏈接。

當瀏覽器發送一個帶 XDEBUG_SESSION_START 的參數的請求到服務器時,服務器接受后將其轉到后端的php處理,如果php開啟了XDebug模塊,則會將debug信息轉發到客戶端IP的IDE的調試端口上。

當參數或者cookie信息中不帶 XDEBUG_SESSION_START ,則不會啟動調試。這就為后續在瀏覽器中添加開關提供了可能。

基本配置

一般情況下,你都只需了解,無需修改。

名稱 類型 默認值 注解
xdebug.default_enable boolean 1 堆棧跟蹤,默認開啟,是xdebug基礎功能之一
xdebug.force_display_errors integer 0 默認關閉,如果這個設置設置為1,那么無論PHP的display_errors設置為什么,都將始終顯示錯誤。
xdebug.force_error_reporting integer 0 默認關閉,允許強制顯示某些錯誤
xdebug.halt_level integer 0 默認關閉,設置接收某些指定錯誤
xdebug.max_nesting_level integer 256 控制無限遞歸(死循環)的保護機制,默認是256
xdebug.max_stack_frames integer -1 控制有多少堆棧幀顯示在堆棧跟蹤中,在PHP錯誤堆棧跟蹤的命令行中,以及在瀏覽器中顯示HTML跟蹤。
xdebug.scream boolean 0 默認關閉,如果該設置為1,那么Xdebug將禁用@(關閉)操作符,以便不再隱藏通知、警告和錯誤。

具體內容請移步官網 https://xdebug.org/docs/basic

打印配置

Xdebug將替換PHP的var_dump()函數來顯示變量。Xdebug版本包含了不同類型的不同顏色,并對數組元素/對象屬性的數量、最大深度和字符串長度進行了限制。還有一些其他函數也處理變量顯示。

名稱 類型 默認值 注解
xdebug.cli_color integer 0 cli模式下輸入結果是否設置顏色
xdebug.overload_var_dump boolean 2 是否允許xdebug重載var_dump函數
xdebug.var_display_max_children integer 128 var_dump 對數組對象子級的顯示層數限制
xdebug.var_display_max_data integer 512 var_dump 對結果長度的限制
xdebug.var_display_max_depth integer 3 var_dump 對默認顯示嵌套的層數的限制

具體內容請移步官網 https://xdebug.org/docs/display

堆棧跟蹤配置

當Xdebug被激活時,當PHP決定顯示一個通知、警告、錯誤等時,它將顯示一個堆棧跟蹤。堆棧跟蹤顯示的信息以及它們的顯示方式可以配置為適合您的需要。

名稱 類型 默認值 注解
xdebug.cli_color integer 0 cli模式下輸入結果是否設置顏色
xdebug.collect_includes boolean 1 控制Xdebug是否應該將include()、include_once()、require()或require_once()中的文件名寫入跟蹤文件
xdebug.collect_params integer 0 該設置默認為0,控制當函數跟蹤或堆棧跟蹤記錄函數調用時,Xdebug是否應該收集傳遞給函數的參數
xdebug.collect_vars boolean 0 這個設置告訴Xdebug在特定范圍內使用哪些變量。由于Xdebug必須逆向工程PHP的操作碼數組,這種分析可能相當緩慢。對于使用xdebug.collect_params,此設置不會記錄不同變量的值。只有當您希望使用xdebug_get_declared_vars()時,才需要啟用此設置。
xdebug.dump.* string empty * 可以是任何COOKIE、文件、GET、POST、REQUEST、SERVER、SESSION。這七個設置控制在發生錯誤時顯示來自超全局變量的哪些數據。
xdebug.dump_globals boolean 1 當該設置設置為true時,Xdebug將添加通過Xdebug.dump配置的超級全局變量的值*到屏幕上的堆棧跟蹤和錯誤日志。
xdebug.dump_once boolean 1 控制是否應該在所有錯誤情況(設置為0)上轉儲超全局變量的值,或只在第一個錯誤情況下轉儲超全局變量的值(設置為1)
xdebug.dump_undefined boolean 0 如果您想從超全局變量中轉儲未定義的值,您應該將該設置設置為1,否則將其設置為0。
xdebug.file_link_format string 文件鏈接格式

具體內容請移步官網 https://xdebug.org/docs/stack...

函數調試配置

Xdebug允許記錄所有函數調用,包括參數和以不同格式返回的值。

名稱 類型 默認值 注解
xdebug.auto_trace boolean 0 當將此設置設置為ture時,將在腳本運行之前啟用函數調用的跟蹤
xdebug.collect_assignments boolean 0 該設置默認為0,控制Xdebug是否應該向函數跟蹤添加變量賦值。
xdebug.collect_includes boolean 1 該設置默認為1,控制Xdebug是否應該將include()、include_once()、require()或require_once()中的文件名寫入跟蹤文件。
xdebug.collect_params integer 0 該設置默認為0,控制當函數跟蹤或堆棧跟蹤記錄函數調用時,Xdebug是否應該收集傳遞給函數的參數。
xdebug.collect_return boolean 0 該設置默認為0,控制Xdebug是否應該將函數調用的返回值寫入跟蹤文件。
xdebug.show_mem_delta integer 0 Xdebug生成的跟蹤文件將顯示函數調用之間內存使用的差異
xdebug.trace_format integer 0 跟蹤文件的格式
xdebug.trace_options integer 0 當設置為“1”時,跟蹤文件將被附加到后面的請求中,而不是被覆蓋。
xdebug.trace_output_dir string /tmp 寫入跟蹤文件的目錄,確保PHP運行的用戶具有該目錄的寫權限。

具體內容請移步官網 https://xdebug.org/docs/execu...

垃圾收集統計信息

Xdebug的內置垃圾收集統計信息分析器允許您查明PHP內部垃圾收集器何時觸發、它能夠清理多少變量、它花費了多長時間以及實際釋放了多少內存。

名稱 類型 默認值 注解
xdebug.gc_stats_enable bool false 如果啟用此設置,則垃圾收集運行的統計信息將自動收集到使用xdebug.gc_stats_output_dir設置的給定目錄中, 并使用由xdebug.gc_stats_output_name配置的自動生成的名稱。
xdebug.gc_stats_output_dir string /tmp 將寫入垃圾收集統計信息輸出的目錄,確保將運行PHP的用戶具有對該目錄的寫入權限。無法使用ini_set() 在腳本中設置此設置。
xdebug.gc_stats_output_name string gcstats.%p 此設置確定用于將垃圾回收統計信息轉儲到的文件的名稱。該設置使用格式說明符指定格式,與sprintf() 和strftime() 非常相似。有幾種格式說明符可用于格式化文件名。

具體內容請移步官網 https://xdebug.org/docs/garba...

遠程調試配置

Xdebug為與運行PHP腳本交互的調試器客戶機提供了一個接口。

名稱 類型 默認值 注解
xdebug.extended_info integer 1 控制Xdebug是否應該為PHP解析器強制執行"extended_info"模式; 這允許Xdebug使用遠程調試器執行文件/行斷點。在跟蹤或分析腳本時,您通常希望關閉此選項,因為PHP生成的oparray將增加大約三分之一的大小,從而減慢腳本速度。無法使用ini_set()在腳本中設置此設置,但只能在php.ini中設置。
xdebug.idekey string complex 控制哪些IDE Key Xdebug應傳遞給DBGp調試器處理程序。則與客戶端通信的key
xdebug.remote_addr_header string "" 該值將用作$SERVER超全局數組中的鍵,以確定用于查找用于“連接回”的IP地址或主機名的標頭
xdebug.remote_autostart boolean 0 您需要使用特定的HTTP GET / POST變量來啟動遠程調試
xdebug.remote_connect_back boolean 0 如果你不設置ip地址,就只能靠xdebug自己找了,Xdebug將嘗試連接到發出HTTP請求的客戶端。它檢查$_SERVER["HTTP_X_FORWARDED_FOR"]和$_SERVER["REMOTE_ADDR"]變量以找出要使用的IP地址
xdebug.remote_cookie_expire_time integer 3600 設置cookie的生命周期
xdebug.remote_enable boolean 0 是否開啟遠程調試
xdebug.remote_handler string dbgp 調試的通信協議
xdebug.remote_host string localhost 調試的網絡地址,開啟了remote_connect_back后,當前配置就無效了
xdebug.remote_log string 調試的日志
xdebug.remote_port integer 9000 調試的端口
xdebug.remote_timeout integer 200 調試的通信鏈接的等待時間

具體內容請移步官網 https://xdebug.org/docs/remote

官方鏈接

全部配置請移步官網 https://xdebug.org/docs/all_s...
全部函數請移步官網 https://xdebug.org/docs/all_f...

PHPSTORM DEBUG

網絡上的配置DEBUG文章太雜太亂,在PHPSTROM跳來跳去的,實在讓人心煩意亂,本章重新整理描述。

配置

其實在PHPSTROM中已經出了很詳細的教程,是吧?只不過大部分人都會直接百度/Google,查詢是個好習慣,但要視情況而定。

Languages & Frameworks > PHP > Debug

第一步

下載XDEBUG擴展,本章開頭已經講過了,這里不再闡述。
在安裝完成后,PHPSTROM提供了驗證腳本。腳本地址為 https://gist.github.com/litzi...
正常情況下檢測成功的樣子是

看到這個你就可以放心的去debug了。

第二步

裝個瀏覽器插件,用戶請求監聽。這個東西唯一的作用就是方便了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
第三步

開啟監聽即可。

你可以直接點擊圖片上的監聽按鈕。

到現在為止,就配置好了IDE。

第四步

創建DEBUG配置文件,根據每個項目都要配置。這步你跑不了。

你看,PHPSTORM非常人性化,在每一步都會給你出個簡單的教程來描述如何配置DEBUG。

添加一個Server和IDE key(xdebug.idekey) 就可以進行調試了。

總結

總結以下IDE配置DEBUG的步驟,實際很簡單。

下載安裝debug

驗證是否通信正常

添加瀏覽器插件 (可省略)

配置運行文件

愉快的debug

這里還要說明下,如果你是不需要訪問本機調試一些類或者代碼塊,你只需要在本機上安裝好XDEBUG,上述配置全部省略,直接點小蟲子圖標即可調試。DEBUG端口默認是9000,如果配置文件內修改了,當然在IDE內也需要修改下。
調試

介紹下實際DEBUG過程中PHPSTORM面板的按鈕都是做什么用的。當你啟動監聽后,你將會看到如下圖

根據上圖圖標位置,以x,y坐標的方式描述每個圖標的功能。

圖標 位置 (x,y) 功能
0,0 重新執行DEBUG (Rerun test.php)
0,1 跳轉到原調試文件 (Show execution point)
0,2 跳到下一行 (Step over)
0,3 執行下一步 (Step info)
0,4 跳入庫、構造函數等方法或類中 (Force Step Info)
0,5 執行函數體或類方法,如果在最外層則結束本次調試 (Step out)
0,6 跳到當前節點的下個斷點 (Run to Cursor)
0,7 執行修改變量或返回的結果用于二次調試(Evaluate arbitrary expression)
0,8 顯示值的地址 (Show Values Addresses)
0,9 是否顯示空的值 , 默認是不顯示
0,10 跳到下個斷點 (Add method to skip list)
1,0 重新執行DEBUG (Resume Program)
2,0 停止DEBUG(Step process)
3,0 查看和管理所有的斷點 ( View and manage all breakpoints)
4,0 忽略所有斷點 (Mute breakpoints)
其他 Docker PHP XDEBUG

部分人在本機裝了Docker,容器中運行這PHP,這個時候該如何進行DEBUG呢?如果認真看本篇文章,你會發現十分的簡單。本身XDEBUG就是遠程調試。首先你要保證

容器做了端口映射到本機80

容器內項目目錄做了磁盤掛載

將容器PHP XDEBUG 中

xdebug.remote_host=local_ip

即可,也不用擔心hosts文件的問題

本機IP = 127.0.0.1 = localhost

這樣配置完成后,就可以當容器不存在,與本機調試一樣。

致謝

感謝你看到這里,希望本章內容可以幫到你,謝謝。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29402.html

相關文章

  • PHP小知識點

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

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

    新編html網頁設計從入門到精通共分為21章,全面系統地講解了html的發展歷史及4.0版的新特性、基本概念、設計原則、文件結構、文件屬性標記、用格式標記進行頁面排版、使用圖像裝飾頁面、超鏈接的使用、使用表格組織頁面、使用多媒體美化頁面、創建多框架頁面、動態網頁的制作、使用層疊樣式表(css)美化頁面、javascript語言、數組和字符串以及表達式與程序的流程控制等內容。 本書適合作為培訓學校的...

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

    摘要:在中,選擇填寫你的項目的和等項目基本信息之后,在依賴中選擇之后。從入門到精通初識注解接口您的關注是我最大的動力 Spring Boot極大的簡化了java項目的開發,在之前如果想要開發一個java項目,需要安裝tomcat或者其他容器插件。但是Spring?Boot內部已經集成了tomcat,因此項目的啟動異常的方便。而且Spring?Boot的開發中有很多默認的配置,幫助我們省去了相...

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

    摘要:本文章屬于爬蟲入門到精通系統教程第五講在爬蟲入門到精通第四講中,我們了解了如何下載網頁,這一節就是如何從下載的網頁中獲取我們想要的內容萬能匹配文章的標題文字我們要獲取的如上所示,假如我們要獲取文章的標題這幾個文字,那么我們應該怎么做呢我 本文章屬于爬蟲入門到精通系統教程第五講 在爬蟲入門到精通第四講中,我們了解了如何下載網頁,這一節就是如何從下載的網頁中獲取我們想要的內容 萬能匹配 h...

    RiverLi 評論0 收藏0

發表評論

0條評論

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