[原] 在 PhpStorm 中使用 Xdebug 遠程調試 PHP 程序(框架/原生均適用)

序言

Xdebug 做爲 PHP 調試工具,提供了豐富的調試函數和配置,能夠直觀的看到 PHP 源代碼的步進和性能數據,以便優化PHP代碼。php

使用 phpstorm + xdebug 來調試 php 程序是藉助強大的IDE監聽功能, 更方便的調試程序. 提升咱們的編碼效率, 當然 var_dump, print_r 等函數也能提供相應的功能, 可是自動化的工具更可以事半功倍. 下面我根據本身的使用介紹下如何進行調試和配置.web

, 一種方式是用外部設置的 session, 另一種是在 phpstorm 中配置頁面入口而後使用內置的監聽來訪問, 原理相同, 下面咱們從原理開始講解chrome

調試原理

配置調試環境

1) 配置 xdebug

這裏使用了最小化配置, 對於 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

2) 設置 phpstorm 配置並開啓監聽

這裏是讓 phpstorm 經過監聽端口的方式獲取到xdebug 斷點傳送過來的數據服務器

2.1) 配置端口

咱們這裏監聽的是 9500 端口, 和 xdebug 配置監聽數據端口一致cookie

2.2) 開啓phpstorm 數據監聽

切換 「開始監聽PHP調試鏈接」 按鈕。session

3) 在 phpstorm 中設置斷點

點擊行號右側空白, 設置斷點php7

4) 設置 debug session

debug session 的工具的目的是設置一個cookie, 讓每次發送數據的時候都會攜帶這個 cookie, 從而識別監聽.框架

4.1) 安裝工具

安裝 chrome 擴展 Xdebug helper

4.2) 點擊 圖標設置session

已經設置了cookie, Key 是 XDEBUG_SESSION, 值是 PHPSTORM, 我認爲這裏的值可有可無, 對於 phpstorm 來講, 是可以監控到的.

5) 運行頁面

這裏咱們在斷點位置能夠看到輸出的內容項目

另外一種方式: 內部調用

這裏的另一種方式的服務器配置方式和流程徹底一致, 就是第四步和第五步有所不一樣, 實現的原理是在phpstorm中設置運行的服務器, 而後經過 debug 模式自動設置 XDEBUG_SESSION, 而且自動開啓監聽.

內部調用: 4) 設置 debug session

4.1) 設置 web 訪問的服務器

例如我這裏的本地域名是 l.dailian.sour-lemon.com, 咱們須要配置一個本地服務器來打開這個頁面, 咱們首先配置一臺服務器.

注意 這裏的配置的域名是你本地已經配置好開發環境的域名, 端口號是 本地開發所使用的端口, 我這裏是 l.dailian.sour-lemon.com 和 80

4.2) 配置調試頁面

咱們這裏建立的調試頁面的類型是 PHP Web Application, 服務器選擇的是剛纔已經創建好的服務器

內部調用: 5) 運行測試頁面

這樣運行的狀況下上面的 2.2) 開啓phpstorm 數據監聽 步驟能夠忽略掉, 這裏不須要開啓這個監聽.

5.1) 開始 debug

點擊 debug 按鈕, 這裏會自動打開一個頁面而且傳遞一個惟一的ID(多是進程 ID)做爲 debug 值

打開的url地址是: http://l.dailian.sour-lemon.com/?XDEBUG_SESSION_START=13608, 這裏的數值是會變更的.

5.2) 查看 debug 面板

打開 debug 面板, 會看到相對應的監聽 idekey, 這裏和上一步設置的key是一致的, 一樣也和 cookie 中的設置的 XDEBUG_SESSION 值一致

其餘幫助

1. 查看兼容性

第一次運行的時候能夠經過 phpstorm 自帶的工具來檢查配置的兼容性.

Run > Web Server Debug Validation

2. debug 幫助面板說明

左側 綠色三角形 : Resume Program,表示將繼續執行,直到下一個中斷點中止。 紅色方形 : Stop,表示中斷當前程序調試。

上方 第一個圖形示 : Step Over,跳過當前函數。 第二個圖形示 : Step Into,進入當前函數內部的程序(至關於觀察程序一步一步執行)。 第三個圖形示 : Force Step Into,強制進入當前函數內部的程序。 第四個圖形示 : Step Out,跳出當前函數內部的程式。 第五個圖形示 : Run to Cursor,定位到當前光標。

框架說明 Frames : 加載的文件列表 Variables : 能夠觀察到全部全局變量、當前局部變量的數值 Watches : 能夠新增變量,觀察變量隨着程序執行的變化。

參考文章

相關文章
相關標籤/搜索