IDEA集成xdebug遠程調試功能

博客原文連接php

在使用php調試代碼的時候,我一般都是使用簡單暴力的echo之類的輸出調試。這種調試方法的效率與我的能力正相關,你加一個echo多數是爲了驗證本身的一個推測,那麼你對代碼越熟悉,你推測的就會越準確,bug解決的就越快,相反則每每如無頭蒼蠅般,東一頭西一頭,不知所謂地輸出一些無心義的調試信息,效率奇低。此時單步調試工具便成了救命稻草,有了它,你能夠查看代碼執行過程當中全部變量的值,心如明鏡,解個bug還不手到擒來。對於php,經常使用的就是xdebug,我這裏就簡單講下IDEA裏面如何使用xdebug進行代碼調試。瀏覽器

安裝

咱們先把xdebug安裝好,因爲這裏是遠程調試,因此xdebug要安裝到php運行的服務器上,若是php是在本地環境中,那就直接安裝到本地,官方安裝文檔在這裏,我這裏簡單講一下Centos 6.6+PHP 5.4的安裝方法。服務器

  1. 下載而且編譯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 installapp

  2. 修改php配置框架

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

安裝完畢!ide

運行原理

在實際使用前,咱們來簡單瞭解xdebug遠程調試的原理,這樣當xdebug不聽話的時候,咱們也知道從哪裏收拾它。詳細文檔參見此處工具

xdebug遠程調試分爲兩部分:調試客戶端和xdebug服務端。前者就是運行咱們代碼調試器的地方,我這裏是IDEA,後者是xdebug運行的地方。當咱們嘗試使用xdebug進行調試時,客戶端會監聽一個端口,等待xdebug來鏈接,一旦鏈接成功,雙方就開始通訊,進行代碼調試。優化

dbgp-setup.gif

圖一,源圖

圖一動態展現了xdebug運行的原理,左邊是調試客戶端,好比IDEAeclipse之類的IDE,右邊是xdebug,運行按照以下步驟進行:

  1. IDE監聽一個調試端口,默認是9000,能夠自行配置。

  2. 用戶訪問右邊php環境的server,咱們這裏使用瀏覽器訪問,通常IDE會自動幫咱們在正常的url後面增長XDEBUG_SESSION_START=name的參數。這個參數是用來通知xdebug主動鏈接IDE9000端口進行調試的,沒有這個參數,xdebug不會去主動鏈接IDE,調試也就不會觸發。

  3. xdebug主動去鏈接IDE9000端口, 鏈接成功後,調試開始。

細心的同窗可能會問,xdebug是如何知道IDE監聽9000端口的呢?好問題,答案就在配置文件裏面。xdebug有兩個配置:remote_hostremote_port,分別表明IDE的ip地址和監聽端口。因而可知,IDExdebug必須協商好監聽端口。

另外一個問題又來了,端口好辦,可是若是個人ip會變化,那我換一個ip,豈不是要修改下xdebug.remote_host配置嗎?好麻煩!!!不知道ip不要緊,xdebug能夠本身知道,只要設置xdebug.remote_connect_back爲1就能夠了,其運行原理見圖二,實現很簡單,xdebug能夠從http請求的頭部獲取ip地址,以後就用該ip地址做爲remote_host來鏈接。

dbgp-setup2.gif

圖二,源圖

php.ini配置

到這裏,相信你們已經基本瞭解xdebug的原理了,本着好記性不如爛筆頭的準則,這裏把個人配置列一下,方便查閱。

[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"

沒講到的配置,你們自行查閱文檔,太懶會變成豬的!!!

IDEA配置

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

其一,監聽端口配置,對於IDEA系列,能夠在配置中搜索Debug或者xdebug就能迅速定位了,圖三是個人配置。

Screen Shot 2015-02-01 at 20.31.16.png

圖三

其二,是本地開發路徑和遠程路徑的映射配置,也就是要讓本地代碼和遠程代碼能夠對應起來。配置位置在項目的Run/Debug Configuration裏面,也就是去新建一個調試項目,截圖以下。
idea1.png

圖四

idea2.png

圖五

按照圖五中配置好mapping關係後,開始使用xdebug的調試功能吧,告別簡單粗暴甚至低效的echo輸出調試吧!

後記

使用echo輸出調試,不少時候是由於開發者懶,懶得集成調試工具,懶得去優化本身的開發環境。碰到小bug使用echo還行,一旦遇到詭異bug或者複雜的框架,牢牢靠echo已然無能爲力。固然,單步調試的另外一個好處是可讓初學者快速掌握項目的架構和執行流程。

書山有路勤爲徑,學海無涯苦做舟!!!

相關文章
相關標籤/搜索