PhpStorm集成xdebug進行斷點調試

本文介紹如何使用PhpStorm集成xdebug在本地開發環境進行斷點調試的技巧。 我配置的環境是:Windows10 + PhpStorm10.0.1 + PHP5.6。php

1. 下載xdebug的擴展,並配置到php.inichrome

zend_extension = d:\dev\php5.6.28\ext\php_xdebug-2.5.0-5.6-vc11-x86_64.dll
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

第一行是加載xdebug的擴展,路徑需根據本身的環境修改。
第二行是開啓遠程調試;
第三行是配置進行調試的主機地址;
第四行是配置進行調試的主機上面會監聽的端口;
第五行是配置調試鏈接通訊使用的協議,這行不配置也不要緊,默認值就是dbgp。dbgp跟http同樣,是一種通訊協議。
根據remote_host跟remote_port,xdebug就知道該把調試鏈接發送到哪裏。瀏覽器

2. 配置PhpStorm中的php解釋器cookie

依次點擊菜單File-Settings,打開以下菜單:工具

image
image

3. 配置PHP的Debugpost

image

以上截圖是PhpStorm的默認值,紅框部分的Debug port應該與php.ini中的xdebug.remote_port保持一致。因此只有在php.ini中xdebug.remote_port不是9000的時候,才須要去這個地方設置。spa

至此,PhpStorm應用xdebug的調試環境就已經配置好了。接下來看看如何使用斷點調試,方法主要有兩種。插件


方法一:最原始的方法。debug

1)主動開啓PhpStorm對調試端口的監聽3d

image

在工具欄上找到如圖所示的按鈕,點一下就開啓了。

2)找到合適的代碼位置打斷點

image

3)訪問對應的請求,並在請求地址後面添加XDEBUG_SESSION_START的參數,如:
image
訪問後就會進入斷點:
image

這個方法中:
第一步的目的是爲了讓PhpStorm開啓對xdebug.remote_port端口的監聽,以便接收到xdebug發出的調試請求。
第三步XDEBUG_SESSION_START參數的值能夠隨意寫,它的做用在於開啓一個http的調試會話。這個會話相似日常的登陸會話同樣,xdebug會把這個值寫到cookie裏面去:
image
只要在http(get或者post)請求中包含XDEBUG_SESSION_START參數或者XDEBUG_SESSION這個cookie中,這個請求就會嘗試進入調試環境。只須要在第一次請求調試的時候加上XDEBUG_SESSION_START的參數,接下來一個小時內都不須要再加這個參數。若是想要中止調試,只要把調試端口監聽關閉便可:
image


方法二:跟方法一相似,只不過在第三步的時候,不須要在請求後邊手動添加XDEBUG_SESSION_START參數,而是藉助瀏覽器的插件來添加。

若是使用chrome瀏覽器,能夠找到下面這個擴展並安裝:
image
安裝完成後,在瀏覽器地址欄旁邊就會出現這個插件的小按鈕:
image           

1)先進入要調試的頁面,不加XDEBUG_SESSION_START參數

2)點擊剛安裝插件的按鈕,隨意輸入Xdebug Key,再點擊Set跟Start XDebug Session按鈕,頁面就會刷新進入調試環境。

這個方法跟方法一本質上沒有區別,就是簡化了輸入XDEBUG_SESSION_START參數的過程而已。


 xdebug進行斷點調試的關鍵在於:xdebug在識別到一個請求需調試的時候,就會用dbgp的協議向remote_host跟remote_port這個地址發送調試請求,當一個位於remote_host上的IDE如PhpStorm正好在監聽remote_port這個端口的調試請求時,就能成功接收到調試信息進行調試。

本文演示的是xdebug用於本地調試的場景,實際上xdebug還可應用於遠程調試的場景,好比說項目已經上線到了生產環境,經過xdebug的遠程調試功能,就能在本地對生產環境的代碼進行調試。目前我還沒遇到這種調試的需求,因此也沒有去嘗試這個方式的具體實現過程,我在xdebug官方的文檔中看到了相似的介紹,等來未來有必要的時候再來研究吧。

參考:

https://xdebug.org/docs/remote
https://xdebug.org/docs/all_settings

相關文章
相關標籤/搜索