亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP xdebug 調(diào)試工具安裝與使用

沈儉 / 510人閱讀

摘要:目前有兩種流行的調(diào)試器,我在學(xué)習(xí)和研究過程中,發(fā)現(xiàn)網(wǎng)上的各種信息過于凌亂,感到痛苦,影響理解和使用。腳本在運(yùn)行時(shí),由插件向發(fā)起連接,將調(diào)試信息發(fā)送給,并通過協(xié)議進(jìn)行互動(dòng)。這種模式的缺陷是配死了目標(biāo),不能支持多用戶調(diào)試。

> 工欲善其事必先利其器,學(xué)習(xí)一門新語言,調(diào)試器的使用必不可少,本文分享一下PHP調(diào)試器的使用。

PHP目前有兩種流行的調(diào)試器,

Xdebug

Zend Debugger

我在學(xué)習(xí)和研究過程中,發(fā)現(xiàn)網(wǎng)上的各種信息過于凌亂,感到痛苦,影響理解和使用。今天我以Xdebug為例,先解釋其基本的工作原理,再說明生產(chǎn)過程中如何使用,希望能帶給大家清晰易懂的知識(shí)。

Xdebug

Xdebug是一個(gè)PHP擴(kuò)展,它采用DBGp協(xié)議,提供了對(duì)PHP進(jìn)行Debugging和Profiling的能力。

Debug信息包含:

stack and function traces in error messages with:

full parameter display for user defined functions

function name, file name and line indications

support for member functions

memory allocation

protection for infinite recursions

此外,Xdebug還提供以下功能:

profiling information for PHP scripts

code coverage analysis

capabilities to debug your scripts interactively with a debugger front-end

今天只討論Debug,其它功能以后有機(jī)會(huì)再分享。

Debug原理

原文參考:https://xdebug.org/docs/remote

簡單來說,XDebug調(diào)試是一種C/S結(jié)構(gòu),Client是PHP-Xdebug插件,Server是我們的IDE(或者各種Editor插件),中間通過DBGp協(xié)議通信。PHP腳本在運(yùn)行時(shí),由Xdebug插件向IDE發(fā)起連接,將調(diào)試信息發(fā)送給IDE,并通過DBGp協(xié)議進(jìn)行互動(dòng)。

看下圖,就明白了:

The IP of the server is 10.0.1.2 with HTTP on port 80

The IDE is on IP 10.0.1.42, so xdebug.remote_host is set to 10.0.1.42

The IDE listens on port 9000, so xdebug.remote_port is set to 9000

The HTTP request is started on the machine running the IDE

Xdebug connects to 10.0.1.42:9000

Debugging runs, HTTP Response provided

以上是單人模式,在php.ini中配置了IDE的IP地址以及監(jiān)聽的端口。這種模式的缺陷是配死了IDE目標(biāo),不能支持多用戶調(diào)試。所以Xdebug還提供了一種多用戶的調(diào)試模式,這種模式無需配置remote_host,而是配置xdebug.remote_connect_back=On,Xdebug會(huì)記下來訪地址,作為調(diào)試時(shí)的連接目標(biāo)。調(diào)試過程如下:

The IP of the server is 10.0.1.2 with HTTP on port 80

The IDE is on an unknown IP, so xdebug.remote_connect_back is set to 1

The IDE listens on port 9000, so xdebug.remote_port is set to 9000

The HTTP request is made, Xdebug detects the IP addres from the HTTP headers

Xdebug connects to the detected IP (10.0.1.42) on port 9000

Debugging runs, HTTP Response provided

搞明白了原理,那我們就開始實(shí)踐吧。

安裝Xdebug

根據(jù)各自不同的工作站平臺(tái),參考官方安裝指導(dǎo).

安裝的時(shí)候注意一下輸出信息,記下安裝好的擴(kuò)展包位置,下一步配置PHP時(shí)會(huì)用到。

配置PHP-Xdebug

打開php.ini(不知道php.ini在哪里的,可以輸出phpinfo()看看),然后加上對(duì)Xdebug擴(kuò)展的配置:

[Xdebug]
zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"
xdebug.remote_enable=On

xdebug.remote_enable=On,表示打開遠(yuǎn)程調(diào)試開關(guān),這是必須的。

然后,有兩種方法可以驗(yàn)證一下插件是否加載成功:

命令行執(zhí)行php -v,看看

![pic](http://imgur.com/3UbEnNo.png)

網(wǎng)頁輸出phpinfo()

![pic](http://imgur.com/r3I8FZF.png)

以上輸出若能看到Xdebug版本信息,就ok了。另外,在phpinfo中,可以看到xdebug的配置信息,搜搜看,這些配置都是可以在php.ini中進(jìn)行修改的,各自代表的意思大家可以查官網(wǎng),這里就不詳述了。

配置IDE

以PHPStorm為例,PHPStorm實(shí)現(xiàn)了DBGp協(xié)議,我們需要配置它監(jiān)聽的端口,這個(gè)端口號(hào)需要與xdebug.remote_port一致,才能確保調(diào)試時(shí)PHP-Xdebug能連上IDE。

以下是默認(rèn)配置,如果沒有沖突可以不用改。在幫其他同學(xué)trouble shooting時(shí),發(fā)現(xiàn)php-fpm和xdebug默認(rèn)都使用9000號(hào)端口,真是一個(gè)奇怪的配置啊,難道他們倆不應(yīng)該經(jīng)常被同時(shí)使用嗎?如果你發(fā)現(xiàn)自己的debug不能正常工作,不妨檢查一下這一點(diǎn),將他們調(diào)整為不同的端口。

開始Debug

之前說過,IDE是作為一個(gè)Server的角色監(jiān)聽特定端口,等待Xdebug來連接,對(duì)于PHPStorm開啟監(jiān)聽非常簡單,直接點(diǎn)擊右上角的“小電話”按鈕:

變成

然后在代碼里面打下斷點(diǎn)。

接下來,開始運(yùn)行并調(diào)試代碼。針對(duì)不同類型的應(yīng)用,方法也不一樣。但目的都是相同的,就是要告訴PHP-Xdebug,我要開始調(diào)試了,給我把調(diào)試信息發(fā)過來!

Web App

兩種方法:

在請求的URL地址后面加一個(gè)QueryString:XDEBUG_SESSION_START=session_name(當(dāng)然用POST參數(shù)也可以),這樣PHP-Xdebug就會(huì)知道該連接IDE調(diào)試了。

其實(shí)IDE提供了快捷的操作方式,不用你手動(dòng)寫URL參數(shù)。見Debugging PHP Web Applications with Run Debug Configurations,簡單來說,就是你需要配置好Web Server,PHP Web Application,再點(diǎn)擊后上角的“小瓢蟲”按鈕,IDE就會(huì)自動(dòng)打開瀏覽器,幫你輸好網(wǎng)址,并添加QueryString:XDEBUG_SESSION_START=session_name。

安裝瀏覽器插件,插件會(huì)在你請求一個(gè)PHP頁面時(shí),帶上一個(gè)XDEBUG_SESSION Cookie,這樣就不用在URL上帶參數(shù)了。

支持的插件:

Firefox: the-easiest-xdebug

Chrome: Xdebug helper

Safari: xdebug-toggler-for-safari

Opera: xdebug-launcher

試試以上兩種方法,斷點(diǎn)命中!開始享受調(diào)試。

Console

一般用在命令行程序或者單元測試的調(diào)試中。

我們需要通過設(shè)置環(huán)境變量XDEBUG_CONFIG來通知Xdebug進(jìn)行調(diào)試。當(dāng)然,我們可以向這個(gè)環(huán)境變量中添加更多的設(shè)置來配置Xdebug(這些配置都可以在php.ini中進(jìn)行設(shè)置)。

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

斷點(diǎn)命中!

不想調(diào)試了,釋放掉這個(gè)環(huán)境變量。

unset XDEBUG_CONFIG

小技巧,如果你用Zsh,可以為上述兩段小代碼設(shè)置別名。

alias xdebug-on="export XDEBUG_CONFIG="idekey=PHPSTORM""
alias xdebug-off="unset XDEBUG_CONFIG"

PHPStorm也提供了快捷的操作,見Debugging PHP CLI scripts with PhpStorm

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/25926.html

相關(guān)文章

  • 推薦代碼調(diào)試工具 Xdebug

    摘要:寫代碼總繞不過需要調(diào)試,除了外,我們還是需要借助進(jìn)行調(diào)試。這里的使用,是分別整合到和下。安裝還是基于神級(jí)武器。至于下一步如何更好的使用,就看各自的實(shí)際項(xiàng)目和開發(fā)需要了。 寫代碼總繞不過需要調(diào)試,除了 UnitTest 外,我們還是需要借助 Xdebug 進(jìn)行調(diào)試。 所以今天來說說如何基于本地 Docker 環(huán)境下,使用 Xdebug。 這里的使用,是分別整合到 VS Code 和 PH...

    MartinHan 評(píng)論0 收藏0
  • 簡杰的php編程分享-1.1 xdebug安裝配置

    摘要:當(dāng)我在官網(wǎng)看到了遠(yuǎn)程調(diào)試原理圖時(shí),我才知道應(yīng)該怎么配置。配置的參數(shù)也少了很多,也不需要在里對(duì)一個(gè)個(gè)請求地址進(jìn)行配置。其他可以配置可以共用。但是如果你使用的是本地的那他就會(huì)出現(xiàn)端口被占用的情況。 介紹 我之前配置直接按網(wǎng)上的文章進(jìn)行配置總是配置不成功,里面很多東西不了解。當(dāng)我在 xdebug 官網(wǎng)看到了 xdebug 遠(yuǎn)程調(diào)試原理圖時(shí),我才知道應(yīng)該怎么配置 xdebug。配置的參數(shù)也少了...

    import. 評(píng)論0 收藏0
  • IDEA集成xdebug遠(yuǎn)程調(diào)試功能

    摘要:遠(yuǎn)程調(diào)試分為兩部分調(diào)試客戶端和服務(wù)端。主動(dòng)去連接的端口,連接成功后,調(diào)試開始。當(dāng)然,單步調(diào)試的另一個(gè)好處是可以讓初學(xué)者快速掌握項(xiàng)目的架構(gòu)和執(zhí)行流程。 博客原文鏈接 在使用php調(diào)試代碼的時(shí)候,我通常都是使用簡單暴力的echo之類的輸出調(diào)試。這種調(diào)試方法的效率與個(gè)人能力正相關(guān),你加一個(gè)echo多數(shù)是為了驗(yàn)證自己的一個(gè)推測,那么你對(duì)代碼越熟悉,你推測的就會(huì)越準(zhǔn)確,bug解決的就越快,相反...

    haobowd 評(píng)論0 收藏0
  • 使用 XdebugPHPStorm 中調(diào)試 PHP 程序(框架/原生均適用)

    摘要:紅色方形,表示中斷當(dāng)前程序調(diào)試。第三個(gè)圖形示,強(qiáng)制進(jìn)入當(dāng)前函數(shù)內(nèi)部的程序??蚣苷f明加載的文件列表可以觀察到所有全局變量當(dāng)前局部變量的數(shù)值可以新增變量,觀察變量隨著程序執(zhí)行的變化。參考文章使用與調(diào)試一 序言 Xdebug 作為 PHP 調(diào)試工具,提供了豐富的調(diào)試函數(shù)和配置,可以直觀的看到 PHP 源代碼的步進(jìn)和性能數(shù)據(jù),以便優(yōu)化PHP代碼。 使用 phpstorm + xdebug 來調(diào)...

    cloud 評(píng)論0 收藏0
  • PHP性能測試?yán)?Xdebugphpstorm

    摘要:是一個(gè)開放源代碼的程序調(diào)試器即一個(gè)工具,可以用來跟蹤,調(diào)試和分析程序的運(yùn)行狀況。以下為安裝示例,安裝請參考集成開發(fā)和斷點(diǎn)調(diào)試環(huán)境的配置。指令的配置路徑必須是絕對(duì)路徑。 Xdebug是一個(gè)開放源代碼的PHP程序調(diào)試器(即一個(gè)Debug工具),可以用來跟蹤,調(diào)試和分析PHP程序的運(yùn)行狀況。以下為Windows+Phpstorm+Xampp+Xdebug安裝示例,MAC安裝請參考集成開發(fā)和斷...

    MoAir 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<