以前整理在印象筆記中,如今搬出來。分本地調試和遠程調試。本文親測經過並截圖,有問題歡迎留言探討。
(參考網上多位前輩的博客,整理在筆記裏忘記保存原文連接,這裏沒法貼出連接,望見諒)
# 痛處
通常php項目調試都用echo, var_dump()之類的函數調試,項目大的話很不方便,也很低效;
# 預備
安裝xdebug擴展;
1,修改php配置文件,在最後添加.
zend_extension = "E:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll";
[xdebug]
xdebug.auto_trace=On
xdebug.collect_params=On
xdebug.collect_vars = On ;收集變量
xdebug.collect_return = On ;收集返回值
xdebug.trace_output_dir="e:/wamp/tmp/debuginfo"
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host= localhost ;用於遠程調試 服務器的地址
xdebug.remote_connect_back = 1;用於遠程調試
xdebug.remote_port = 9000
xdebug.idekey = PHPSTORM
xdebug.profiler_enable = on
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "E:/wamp/tmp/debuginfo"
xdebug.show_local_vars=0
xdebug.show_exception_trace = On ;開啓異常跟蹤
xdebugbug.max_nesting_level = 10000
phpinfo中驗證xdebug擴展是否啓用。 服務端配置完成!
2,phpstrom 配置
這部配置的端口意思是 IDE 會在本機監聽9000端口php
在項目右上角debug配置中
根據項目選擇類型以下,網站選擇web application,Name項自定義
server項沒有,點擊後面按鈕配置
配置starturl(入口地址)linux
完成配置以下:web
點那個蟲子就開啓了調試,會在上一步咱們配置的默認瀏覽器打開starturl,以下:chrome
在代碼裏打一個斷點,刷新一下頁面,調試窗口會顯示詳細信息, 上面有操做按鈕,以下:
# 優化地方windows
上面調試步驟很麻煩,咱們都是但願想調試的時候就調試,推薦插件 chrome 插件 xdebug helper 方便 隨時調試;也是個臭蟲的圖標,安裝上配置一下,以下:
在須要調試的頁面啓用插件
IDE中點亮電話的圖標,啓動監聽,以下:瀏覽器
配置結束,代碼裏想調試直接打斷點,完後瀏覽器訪問頁面,運行到斷點IDE就會監聽debug信息,並把信息顯示出來;
#xdebug 遠程調試
有點項目在本地開發很難搭建環境,咱們須要在遠程開發和調試。也就是在本地去調試遠程開發機上的代碼。
!0,遠程調試原理:
左邊是調試客戶端,好比IDEA、eclipse之類的IDE,右邊是xdebug,運行按照以下步驟進行:
1, IDE監聽一個調試端口,默認是9000,能夠自行配置。
2, 用戶訪問右邊php環境的server,咱們這裏使用瀏覽器訪問(隨便在那都行,爲方便選擇本地瀏覽器),通常IDE會自動幫咱們在正常的url後面增長
XDEBUG_SESSION_START=一個隨機數 的參數。這個參數是用來通知xdebug主動鏈接IDE的9000端口進行調試的,沒有這個參數,xdebug不會去主動鏈接IDE,
調試也就不會觸發。
3, xdebug主動去鏈接IDE的9000端口, 鏈接成功後,調試開始。
xdebug是如何知道IDE監聽9000端口的呢?
xdebug有兩個配置:remote_host和remote_port,分別表明IDE的ip地址和監聽端口。因而可知,IDE和xdebug必須協商好監聽端口。
端口好辦,可是若是個人ip會變化,那我換一個ip,豈不是要修改下xdebug.remote_host配置嗎?好麻煩!!!
不知道ip不要緊,xdebug能夠本身知道,只要設置 xdebug.remote_connect_back 爲1就能夠了,其運行原理見下圖,實現很簡單,xdebug能夠從http請求的頭部獲取ip
地址,以後就用該ip地址做爲remote_host來鏈接。
!1,服務端環境安裝xdebug(方法如上)
最關鍵的兩個設置xdebug.remote_host和xdebug.remote_connect_back,
xdebug.remote_host 要設置成
你本機的地址,
多個用逗號隔開
xdebug.remote_connect_back要設置成1或者on
設置完這個會自動忽略remote_host的設置,若是本地是自動獲取ip或者多人的話開啓這個比較好
服務端的配置已完成!服務器
!2,IDE配置
(調試遠端代碼通常會和遠端開發同時進行,遠端調試須要打開一個本地和遠端的通道,要不接受不到調試信息)
> 新建一個遠端的php解釋器
配置正確的話,以下圖:
> 新建項目 或者 把本地已有的項目和遠端的項目映射一下 都行app
> 在項目中配置 sftp
把遠端代碼下載下來,以下:
來個截圖,好累啊
這個時候看咱們開始配置的那個遠端解釋器 以前警告沒了,由於咱們配置了mappingeclipse
配置debug,步驟同上,不同的地方是配置 path mappingide
開始調試了 打斷點 瀏覽器訪問遠端的地址 debug窗口已經有調試信息了
忽略個人504 這是別的緣由形成的和xdebug不要緊 由於是測試項目懶得管 ~ ~
開發遠端項目咱們剛纔配置好了sftp,咱們本地修改能夠經過以下配置自動同步到遠端 我通常選 ctrl + s 那項 按ctrl + s會自動同步到遠端開發機