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

資訊專欄INFORMATION COLUMN

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

沈儉 / 440人閱讀

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

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

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

Xdebug

Zend Debugger

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

簡(jiǎn)單來(lái)說(shuō),XDebug調(diào)試是一種C/S結(jié)構(gòu),Client是PHP-Xdebug插件,Server是我們的IDE(或者各種Editor插件),中間通過(guò)DBGp協(xié)議通信。PHP腳本在運(yùn)行時(shí),由Xdebug插件向IDE發(fā)起連接,將調(diào)試信息發(fā)送給IDE,并通過(guò)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)聽(tīng)的端口。這種模式的缺陷是配死了IDE目標(biāo),不能支持多用戶調(diào)試。所以Xdebug還提供了一種多用戶的調(diào)試模式,這種模式無(wú)需配置remote_host,而是配置xdebug.remote_connect_back=On,Xdebug會(huì)記下來(lái)訪地址,作為調(diào)試時(shí)的連接目標(biāo)。調(diào)試過(guò)程如下:

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

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

安裝Xdebug

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

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

配置PHP-Xdebug

打開(kāi)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,表示打開(kāi)遠(yuǎn)程調(diào)試開(kāi)關(guān),這是必須的。

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

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

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

網(wǎng)頁(yè)輸出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)聽(tīng)的端口,這個(gè)端口號(hào)需要與xdebug.remote_port一致,才能確保調(diào)試時(shí)PHP-Xdebug能連上IDE。

以下是默認(rèn)配置,如果沒(méi)有沖突可以不用改。在幫其他同學(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)整為不同的端口。

開(kāi)始Debug

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

變成

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

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

Web App

兩種方法:

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

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

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

支持的插件:

Firefox: the-easiest-xdebug

Chrome: Xdebug helper

Safari: xdebug-toggler-for-safari

Opera: xdebug-launcher

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

Console

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

我們需要通過(guò)設(shè)置環(huán)境變量XDEBUG_CONFIG來(lái)通知Xdebug進(jìn)行調(diào)試。當(dāng)然,我們可以向這個(gè)環(huán)境變量中添加更多的設(shè)置來(lái)配置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也提供了快捷的操作,見(jiàn)Debugging PHP CLI scripts with PhpStorm

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25926.html

相關(guān)文章

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

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

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

    摘要:當(dāng)我在官網(wǎng)看到了遠(yuǎn)程調(diào)試原理圖時(shí),我才知道應(yīng)該怎么配置。配置的參數(shù)也少了很多,也不需要在里對(duì)一個(gè)個(gè)請(qǐng)求地址進(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)試開(kāi)始。當(dāng)然,單步調(diào)試的另一個(gè)好處是可以讓初學(xué)者快速掌握項(xiàng)目的架構(gòu)和執(zhí)行流程。 博客原文鏈接 在使用php調(diào)試代碼的時(shí)候,我通常都是使用簡(jiǎn)單暴力的echo之類的輸出調(diào)試。這種調(diào)試方法的效率與個(gè)人能力正相關(guān),你加一個(gè)echo多數(shù)是為了驗(yàn)證自己的一個(gè)推測(cè),那么你對(duì)代碼越熟悉,你推測(cè)的就會(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(shuō)明加載的文件列表可以觀察到所有全局變量當(dāng)前局部變量的數(shù)值可以新增變量,觀察變量隨著程序執(zhí)行的變化。參考文章使用與調(diào)試一 序言 Xdebug 作為 PHP 調(diào)試工具,提供了豐富的調(diào)試函數(shù)和配置,可以直觀的看到 PHP 源代碼的步進(jìn)和性能數(shù)據(jù),以便優(yōu)化PHP代碼。 使用 phpstorm + xdebug 來(lái)調(diào)...

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

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

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

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

0條評(píng)論

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