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

資訊專欄INFORMATION COLUMN

IDEA集成xdebug遠(yuǎn)程調(diào)試功能

haobowd / 2632人閱讀

摘要:遠(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í)候,我通常都是使用簡(jiǎn)單暴力的echo之類的輸出調(diào)試。這種調(diào)試方法的效率與個(gè)人能力正相關(guān),你加一個(gè)echo多數(shù)是為了驗(yàn)證自己的一個(gè)推測(cè),那么你對(duì)代碼越熟悉,你推測(cè)的就會(huì)越準(zhǔn)確,bug解決的就越快,相反則往往如無頭蒼蠅般,東一頭西一頭,不知所謂地輸出一些無意義的調(diào)試信息,效率奇低。此時(shí)單步調(diào)試工具便成了救命稻草,有了它,你可以查看代碼執(zhí)行過程中所有變量的值,心如明鏡,解個(gè)bug還不手到擒來。對(duì)于php,常用的就是xdebug,我這里就簡(jiǎn)單講下IDEA里面如何使用xdebug進(jìn)行代碼調(diào)試。

安裝

我們先把xdebug安裝好,由于這里是遠(yuǎn)程調(diào)試,所以xdebug要安裝到php運(yùn)行的服務(wù)器上,如果php是在本地環(huán)境中,那就直接安裝到本地,官方安裝文檔在這里,我這里簡(jiǎn)單講一下Centos 6.6+PHP 5.4的安裝方法。

下載并且編譯xdebug。
下載鏈接-xdebug-2.2.7.tgz

wget http://xdebug.org/files/xdebug-2.2.7.tgz
tar zxvf xdebug-2.2.7.tgz
cd xdebug-2.2.7
phpize&make&make install

修改php配置

在php.ini中增加如下一行:
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so

安裝完畢!

運(yùn)行原理

在實(shí)際使用前,我們來簡(jiǎn)單了解xdebug遠(yuǎn)程調(diào)試的原理,這樣當(dāng)xdebug不聽話的時(shí)候,我們也知道從哪里收拾它。詳細(xì)文檔參見此處。

xdebug遠(yuǎn)程調(diào)試分為兩部分:調(diào)試客戶端和xdebug服務(wù)端。前者就是運(yùn)行我們代碼調(diào)試器的地方,我這里是IDEA,后者是xdebug運(yùn)行的地方。當(dāng)我們嘗試使用xdebug進(jìn)行調(diào)試時(shí),客戶端會(huì)監(jiān)聽一個(gè)端口,等待xdebug來連接,一旦連接成功,雙方就開始通信,進(jìn)行代碼調(diào)試。

圖一,源圖

圖一動(dòng)態(tài)展示了xdebug運(yùn)行的原理,左邊是調(diào)試客戶端,比如IDEAeclipse之類的IDE,右邊是xdebug,運(yùn)行按照如下步驟進(jìn)行:

IDE監(jiān)聽一個(gè)調(diào)試端口,默認(rèn)是9000,可以自行配置。

用戶訪問右邊php環(huán)境的server,我們這里使用瀏覽器訪問,一般IDE會(huì)自動(dòng)幫我們?cè)谡5膗rl后面增加XDEBUG_SESSION_START=name的參數(shù)。這個(gè)參數(shù)是用來通知xdebug主動(dòng)連接IDE9000端口進(jìn)行調(diào)試的,沒有這個(gè)參數(shù),xdebug不會(huì)去主動(dòng)連接IDE,調(diào)試也就不會(huì)觸發(fā)。

xdebug主動(dòng)去連接IDE9000端口, 連接成功后,調(diào)試開始。

細(xì)心的同學(xué)可能會(huì)問,xdebug是如何知道IDE監(jiān)聽9000端口的呢?好問題,答案就在配置文件里面。xdebug有兩個(gè)配置:remote_hostremote_port,分別代表IDE的ip地址和監(jiān)聽端口。由此可見,IDExdebug必須協(xié)商好監(jiān)聽端口。

另一個(gè)問題又來了,端口好辦,但是如果我的ip會(huì)變化,那我換一個(gè)ip,豈不是要修改下xdebug.remote_host配置嗎?好麻煩?。?!不知道ip沒關(guān)系,xdebug可以自己知道,只要設(shè)置xdebug.remote_connect_back為1就可以了,其運(yùn)行原理見圖二,實(shí)現(xiàn)很簡(jiǎn)單,xdebug可以從http請(qǐng)求的頭部獲取ip地址,之后就用該ip地址作為remote_host來連接。

圖二,源圖

php.ini配置

到這里,相信大家已經(jīng)基本了解xdebug的原理了,本著好記性不如爛筆頭的準(zhǔn)則,這里把我的配置列一下,方便查閱。

[xdebug]
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.remote_port=9444
xdebug.remote_autostart=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/logs/xdebug/xdebug-profiler"

沒講到的配置,大家自行查閱文檔,太懶會(huì)變成豬的?。?!

IDEA配置

最后一步就是IDEA,也即IDE的配置了。主要有兩方面要配置:

其一,監(jiān)聽端口配置,對(duì)于IDEA系列,可以在配置中搜索Debug或者xdebug就能迅速定位了,圖三是我的配置。

圖三

其二,是本地開發(fā)路徑和遠(yuǎn)程路徑的映射配置,也就是要讓本地代碼和遠(yuǎn)程代碼可以對(duì)應(yīng)起來。配置位置在項(xiàng)目的Run/Debug Configuration里面,也就是去新建一個(gè)調(diào)試項(xiàng)目,截圖如下。

圖四

圖五

按照?qǐng)D五中配置好mapping關(guān)系后,開始使用xdebug的調(diào)試功能吧,告別簡(jiǎn)單粗暴甚至低效的echo輸出調(diào)試吧!

后記

使用echo輸出調(diào)試,很多時(shí)候是因?yàn)殚_發(fā)者懶,懶得集成調(diào)試工具,懶得去優(yōu)化自己的開發(fā)環(huán)境。碰到小bug使用echo還行,一旦遇到詭異bug或者復(fù)雜的框架,緊緊靠echo已然無能為力。當(dāng)然,單步調(diào)試的另一個(gè)好處是可以讓初學(xué)者快速掌握項(xiàng)目的架構(gòu)和執(zhí)行流程。

  

書山有路勤為徑,學(xué)海無涯苦作舟?。?!

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

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

相關(guān)文章

  • 一文掌握PHP Xdebug 本地與遠(yuǎn)程調(diào)試

    摘要:原文鏈接一文掌握本地與遠(yuǎn)程調(diào)試很久沒寫了同樣很很久沒有用了,近期有個(gè)簡(jiǎn)單的場(chǎng)景要用到,簡(jiǎn)單記錄一下關(guān)鍵步驟。配置與本地調(diào)試的配置不一樣的地方就是和,其他地方大同小異。 原文鏈接:一文掌握PHP Xdebug 本地與遠(yuǎn)程調(diào)試 很久沒寫PHP了、同樣很很久沒有用XDebug了,近期有個(gè)簡(jiǎn)單的場(chǎng)景要用到,簡(jiǎn)單記錄一下關(guān)鍵步驟。 本地調(diào)試 本地環(huán)境: $ php -v PHP 7.3.4 (c...

    MrZONT 評(píng)論0 收藏0
  • 簡(jiǎn)要記錄下IDEA進(jìn)行遠(yuǎn)程調(diào)試

    摘要:前言系統(tǒng)體積比較臃腫,本地跑起來太慢,目前都是本地寫完代碼,提交,然后重新部署開發(fā)集成環(huán)境,如果測(cè)試有問題,再通過遠(yuǎn)程接入來調(diào)試。第一步當(dāng)然,前提是服務(wù)器上要打開遠(yuǎn)程調(diào)試端口,進(jìn)行的配置。 前言 WMS系統(tǒng)體積比較臃腫,本地跑起來太慢,目前都是本地寫完代碼,提交,然后重新部署開發(fā)集成環(huán)境,如果測(cè)試有問題,再通過遠(yuǎn)程接入來調(diào)試。所以開發(fā)流程就變成 寫單元測(cè)試寫業(yè)務(wù)代碼跑單元測(cè)試提交代碼,...

    Michael_Ding 評(píng)論0 收藏0
  • XDEBUG 從入門到精通

    摘要:默認(rèn)關(guān)閉如果該設(shè)置為,那么將禁用關(guān)閉操作符,以便不再隱藏通知警告和錯(cuò)誤。將寫入垃圾收集統(tǒng)計(jì)信息輸出的目錄,確保將運(yùn)行的用戶具有對(duì)該目錄的寫入權(quán)限。此設(shè)置確定用于將垃圾回收統(tǒng)計(jì)信息轉(zhuǎn)儲(chǔ)到的文件的名稱。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的擴(kuò)展,用于協(xié)助調(diào)試和開發(fā)。 它包含一個(gè)用...

    leejan97 評(píng)論0 收藏0
  • PHP開發(fā)人員使用工具(個(gè)人愛好)

    摘要:管理工具是一款非常好用的管理和開發(fā)工具。接口調(diào)試開發(fā)的一款功能強(qiáng)大的網(wǎng)頁調(diào)試與發(fā)送網(wǎng)頁請(qǐng)求。 PHPIDe 我首先力薦PHPstorm10。目前用起來很爽,集成xdebug,集成git進(jìn)去,當(dāng)然英文不好的同學(xué)在下載個(gè)漢化包,在線調(diào)試。提供諸于:智能HTML/CSS/JavaScript/PHP編輯、代碼質(zhì)量分析、調(diào)試和測(cè)試等功能。另外,它還是跨平臺(tái)。 Mysql管理工具 Navicat...

    Null 評(píng)論0 收藏0
  • 容器化開發(fā)環(huán)境 - 如何斷點(diǎn)調(diào)試容器中的應(yīng)用

    摘要:上一篇容器化開發(fā)環(huán)境已經(jīng)簡(jiǎn)單的介紹了如何容器化開發(fā)環(huán)境。學(xué)會(huì)斷點(diǎn)調(diào)試容器中的應(yīng)用,再也不用為我那烏黑亮麗的頭發(fā)著急啦原文鏈接 上一篇容器化開發(fā)環(huán)境已經(jīng)簡(jiǎn)單的介紹了如何容器化開發(fā)環(huán)境。在開發(fā)過程中,很多時(shí)候都需要通過斷點(diǎn)的方式來調(diào)試程序或定位BUG,那么如何斷點(diǎn)調(diào)試運(yùn)行在容器中的應(yīng)用呢??? 容器就像一個(gè)虛擬機(jī),就像一個(gè)遠(yuǎn)程的服務(wù)器,要斷點(diǎn)調(diào)試容器中的應(yīng)用,就像要斷點(diǎn)調(diào)試虛擬機(jī)和遠(yuǎn)程的服...

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

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

0條評(píng)論

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