首先配置好xdebug 在php.ini裡面加入以下配置(修改完註意重啟apache或nginx): [xdebug] zend_extension="/usr/local/opt/php55-xdebug/xdebug.so" xdebug.remote_enable=On xdebug.remo ...
首先配置好xdebug
在php.ini裡面加入以下配置(修改完註意重啟apache或nginx):
-
[xdebug]
-
zend_extension="/usr/local/opt/php55-xdebug/xdebug.so"
-
xdebug.remote_enable=On
-
xdebug.remote_autostart=Off
-
xdebug.remote_host="localhost"
-
xdebug.remote_port=9002
-
xdebug.remote_handler="dbgp"
-
;可以是任意Key,這裡設定為PHPSTORM
-
xdebug.idekey="PHPSTORM"
註:我所用的是mac的brew-emp(nginx+mysql+php),它的xdebug配置文件不在php.ini,而是在/usr/local/etc/php/5.5/conf.d里的ext-xdebug.ini中
配置phpstorm xdebug監聽的伺服器以及php應用程式(項目)
phpstorm右側的Edit Configurations
接上圖:
如下圖,填寫php網站的名稱,以及Server(一開始沒有server,需要先添加(看下圖),host就是你虛擬主機名,埠一般是80除非你虛擬主機配置的時候特別指定了其他埠)
配置好之後,如下圖所示:
註:Start URL看具體情況,我是用nginx的,www.test.com是在瀏覽器上可以直接訪問到我網站主頁的,所以我就直接填個斜線“/”就行,如果你要具體指定到某個文件,那就自己填上去。
最後應用(apply)——保存(save)。
設置phpstorm xdebug監聽的埠
(埠號只要是系統沒用到的就行,但是要跟前面xdebug配置文件"xdebug.remote_port=9002"中的埠號相同),設置方法如下:
在phpstorm的設置里,搜索debug,找到Languages & Frameworks——PHP——Debug
上一步點擊Debug進入如下界面:
其他選項可以看著選,不過註意Debug port要和xdebug的配置里的埠一樣:
瀏覽器中安裝xdebug插件
1、谷歌瀏覽器安裝Xdebug helper插件
2、火狐瀏覽器安裝easy Xdebug 插件
搜索到兩個easy debug,用比較新的那個
如下圖,點擊小蟲,當小蟲下方有個紅色減號的時候,表示開始監聽debug,當下圖的正方形為紅色的時候(滑鼠點擊可切換狀態),會在cookie中記錄xdebug profile
非監聽狀態 監聽狀態:(只要小蟲有個減號就表示監聽狀態,此時正方形不一定要變成紅色,如果變成紅色了就表示開啟了cookie,具體作用我還不知道)cookie:
開始使用xdebug
首先在代碼中打一個或多個斷點(程式運行到這裡會中斷,然後會輸出debug信息)
然後在phpstorm中選擇要debug的應用程式(因為可以創建多個要debug的應用程式),然後點擊小電話圖標開始監聽debug(不監聽狀態:,監聽狀態:),最後點擊小蟲子
點擊小蟲子後,會自動用瀏覽器打開然後又會自動跳回到phpstorm(看你debug的是什麼位置,有時候不一定會跳),並且此時在phpstorm下方會輸出debug信息。
設置debug的時候,運行到的那一行的代碼顏色顏色
debug的行的這些信息怎樣去掉?
點擊下麵這個按鈕就能去掉
調試的小知識:單步執行命令step into/step out/step over的區別
step into就是單步執行,遇到子函數就進入並且繼續單步執行;
step over是在單步執行時,在函數內遇到子函數時不會進入子函數內單步執行,而是將子函數整個執行完再停止,也就是把子函數整個作為一步。有一點,經過我們簡單的調試,在不存在子函數的情況下是和step into效果一樣的。
step out就是但單步執行到子函數內時,用step out就可以執行完子函數餘下部分,並返回到上一層函
數。
step into:進入子函數
step over:越過子函數,但子函數會執行
step out:跳出子函數