先說下原理: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。php
1.環境準備及xdebug擴展安裝。homebrew搭建nginx+php很是簡單,幾句命令就搞定了,我就很少說了,這裏主要強調一點,homebrew默認安裝的php是debug的,可是默認安裝的php擴展確實二進制安裝方式,非debug,因此brew intall php56-xdebug安裝的擴展會報錯。解決辦法是brew install php56-xdebug -fs,即便用源碼編譯安裝fs時from source的縮寫,這樣重啓php,就能夠啓用xdebug擴展了。nginx
2.配置ext-xdebug.ini文件,如圖是個人配置,其中xdebug.remote_host/port/根據你本身的本地環境進行配置,另外建議加上最後一條xdebug.remote_log,不少人不加,到時候出錯了也不知道去哪裏找,加上這個,到時候來看這個文件,就知道哪裏出問題了。redis
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的運行,把前面的變量的值顯示在代碼的旁邊,很方便調試邏輯複雜的程序。phpstorm
6.篇幅有限,本身研究的也有限,有興趣的留言評論一塊兒討論吧。google