程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PhpStorm集成xdebug進行斷點調試,phpstormxdebug

PhpStorm集成xdebug進行斷點調試,phpstormxdebug

編輯:關於PHP編程

PhpStorm集成xdebug進行斷點調試,phpstormxdebug


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

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

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解釋器

依次點擊菜單File-Settings,打開如下菜單:

image
image

3. 配置PHP的Debug

image

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

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


方法一:最原始的方法。

1)主動開啟PhpStorm對調試端口的監聽

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved