今天研究了下用phpstorm做xdebug調試,首先申明本人電腦是mac系統,軟件包管理用的是homebrew,phpstorm用的是2016.3.2版本,php56,xdebug2.5.1,希望對研究此方面的同學有一點幫助,畢竟我花了一上午,google了好多資料才弄好。下面是效果圖:


先說下原理:xdebug可以控制PHP程序的執行,這意味着xdebug可以在任何時候暫停或者恢復正在運行的PHP程序。當PHP程序被暫停的時候,xdebug可以獲取到程序的相關信息,比如變量的值等。xdebug也可以修改一個變量的值,然后再恢復暫停的程序,讓其繼續運行。xdebug配合IDE進行可視化調試的過程(如phpstorm的斷點調試)被稱為“遠程調試”,是因為調試時有一個Server(xdebug)和一個Client(IDE),所以在調試的時候,被調試的PHP程序和調試PHP程序的IDE可以不在同一台電腦上。xdebug在進行遠程調試的時候扮演一個Server的角色,它會在一個指定的端口(默認是9000)等待IDE的連接。目前有2種通信的協議,GDB和DBGp,其中DBGp是DBG的取代協議。IDE在執行調試的時候,給xdebug發送需要執行的命令,xdebug接受到命令后執行,然后將執行的情況和獲得的PHP程序運行信息返回給IDE。現在很多IDE都實現了與xdebug通信的協議,本人用的是phpstorm。
1.環境准備及xdebug擴展安裝。homebrew搭建nginx+php非常簡單,幾句命令就搞定了,我就不多說了,這里主要強調一點,homebrew默認安裝的php是debug的,但是默認安裝的php擴展確實二進制安裝方式,非debug,所以brew intall php56-xdebug安裝的擴展會報錯。解決辦法是brew install php56-xdebug -fs,即使用源碼編譯安裝fs時from source的縮寫,這樣重啟php,就可以啟用xdebug擴展了。

2.配置ext-xdebug.ini文件,如圖是我的配置,其中xdebug.remote_host/port/根據你自己的本地環境進行配置,另外建議加上最后一條xdebug.remote_log,很多人不加,到時候出錯了也不知道去哪里找,加上這個,到時候來看這個文件,就知道哪里出問題了。

3.配置phpstorm。步驟:
1,Preferences->語言和框架->php 2,Preferences->語言和框架->php->servers 3,Preferences->語言和框架->php->debug 4,Preferences->語言和框架->php->debug->dbgp proxy 以上忽略大小寫,下面上圖我的配置。




4.下載瀏覽器插件。這個根據瀏覽器不同,具體安裝方式不同,我用的是JetBrains IDE Support 2.0.9,這個不用多說。
5.設置斷點調試。在你配置的Servers根目錄下,寫代碼,這個隨意,我的是安裝了Redis以及phpredis擴展,就寫了個相關的,點擊代碼行首出現小紅點就設置了斷點,點擊phpstorm右上角的電話標志,然后點擊爬蟲標志,簡單設置下就可以了。然后就出現我開頭展示的情形了,xdebug會在斷點那里停止php的運行,把前面的變量的值顯示在代碼的旁邊,很方便調試邏輯復雜的程序。
6.篇幅有限,自己研究的也有限,有興趣的留言評論一起討論吧。
