Xdebug 做爲 PHP 調試工具,提供了豐富的調試函數和配置,能夠直觀的看到 PHP 源代碼的步進和性能數據,以便優化PHP代碼。php
使用 phpstorm + xdebug 來調試 php 程序是藉助強大的IDE監聽功能, 更方便的調試程序. 提升咱們的編碼效率, 當然 var_dump, print_r 等函數也能提供相應的功能, 可是自動化的工具更可以事半功倍. 下面我根據本身的使用介紹下如何進行調試和配置.web
, 一種方式是用外部設置的 session, 另一種是在 phpstorm 中配置頁面入口而後使用內置的監聽來訪問, 原理相同, 下面咱們從原理開始講解chrome
這裏使用了最小化配置, 對於 profile 等功能沒有配置segmentfault
[xdebug]
zend_extension="/usr/local/opt/php70-xdebug/xdebug.so"
xdebug.remote_enable=1 # 啓用遠程調試
xdebug.remote_connect_back=1 # 忽略 remote_host 配置, 不關注主機配置, 開發者使用最舒服
xdebug.remote_port=9050 # 監聽端口
複製代碼
注意 這裏監聽端口默認是 9000 , 和 php 默認監聽重複, 注意儘可能不用使用 9000, 以避免出現不生效的狀況.bash
這裏是讓 phpstorm 經過監聽端口的方式獲取到xdebug 斷點傳送過來的數據服務器
咱們這裏監聽的是 9500 端口, 和 xdebug 配置監聽數據端口一致cookie
切換 「開始監聽PHP調試鏈接」 按鈕。session
點擊行號右側空白, 設置斷點php7
debug session 的工具的目的是設置一個cookie, 讓每次發送數據的時候都會攜帶這個 cookie, 從而識別監聽.框架
安裝 chrome 擴展 Xdebug helper
已經設置了cookie, Key 是 XDEBUG_SESSION
, 值是 PHPSTORM
, 我認爲這裏的值可有可無, 對於 phpstorm 來講, 是可以監控到的.
這裏咱們在斷點位置能夠看到輸出的內容項目
這裏的另一種方式的服務器配置方式和流程徹底一致, 就是第四步和第五步有所不一樣, 實現的原理是在phpstorm中設置運行的服務器, 而後經過 debug 模式自動設置 XDEBUG_SESSION
, 而且自動開啓監聽.
例如我這裏的本地域名是 l.dailian.sour-lemon.com
, 咱們須要配置一個本地服務器來打開這個頁面, 咱們首先配置一臺服務器.
注意 這裏的配置的域名是你本地已經配置好開發環境的域名, 端口號是 本地開發所使用的端口, 我這裏是 l.dailian.sour-lemon.com
和 80
咱們這裏建立的調試頁面的類型是 PHP Web Application
, 服務器選擇的是剛纔已經創建好的服務器
這樣運行的狀況下上面的 2.2) 開啓phpstorm 數據監聽
步驟能夠忽略掉, 這裏不須要開啓這個監聽.
點擊 debug 按鈕, 這裏會自動打開一個頁面而且傳遞一個惟一的ID(多是進程 ID)做爲 debug 值
打開的url地址是: http://l.dailian.sour-lemon.com/?XDEBUG_SESSION_START=13608
, 這裏的數值是會變更的.
打開 debug 面板, 會看到相對應的監聽 idekey, 這裏和上一步設置的key是一致的, 一樣也和 cookie 中的設置的 XDEBUG_SESSION
值一致
第一次運行的時候能夠經過 phpstorm 自帶的工具來檢查配置的兼容性.
Run > Web Server Debug Validation
左側 綠色三角形 : Resume Program
,表示將繼續執行,直到下一個中斷點中止。 紅色方形 : Stop
,表示中斷當前程序調試。
上方 第一個圖形示 : Step Over
,跳過當前函數。 第二個圖形示 : Step Into
,進入當前函數內部的程序(至關於觀察程序一步一步執行)。 第三個圖形示 : Force Step Into
,強制進入當前函數內部的程序。 第四個圖形示 : Step Out
,跳出當前函數內部的程式。 第五個圖形示 : Run to Cursor
,定位到當前光標。
框架說明 Frames : 加載的文件列表 Variables : 能夠觀察到全部全局變量、當前局部變量的數值 Watches : 能夠新增變量,觀察變量隨着程序執行的變化。