[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

多釐發表於2019-01-04

序言

Xdebug 作為 PHP 除錯工具,提供了豐富的除錯函式和配置,可以直觀的看到 PHP 原始碼的步進和效能資料,以便優化PHP程式碼。

使用 phpstorm + xdebug 來除錯 php 程式是藉助強大的IDE監聽功能, 更方便的除錯程式. 提高我們的編碼效率, 固然 var_dump, print_r 等函式也能提供相應的功能, 但是自動化的工具更能夠事半功倍. 下面我根據自己的使用介紹下如何進行除錯和配置.

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

除錯原理

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

配置除錯環境

1) 配置 xdebug

這裡使用了最小化配置, 對於 profile 等功能沒有配置

[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, 以免出現不生效的情況.

2) 設定 phpstorm 配置並開啟監聽

這裡是讓 phpstorm 通過監聽埠的方式獲取到xdebug 斷點傳送過來的資料

2.1) 配置埠

我們這裡監聽的是 9500 埠, 和 xdebug 配置監聽資料埠一致

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

2.2) 開啟phpstorm 資料監聽

切換 “開始監聽PHP除錯連線” 按鈕。

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

3) 在 phpstorm 中設定斷點

點選行號右側空白, 設定斷點

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

4) 設定 debug session

debug session 的工具的目的是設定一個cookie, 讓每次傳送資料的時候都會攜帶這個 cookie, 從而識別監聽.

4.1) 安裝工具

安裝 chrome 擴充套件 Xdebug helper

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

4.2) 點選 圖示設定session

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

已經設定了cookie, Key 是 XDEBUG_SESSION, 值是 PHPSTORM, 我認為這裡的值無關緊要, 對於 phpstorm 來說, 是能夠監控到的.

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

5) 執行頁面

這裡我們在斷點位置可以看到輸出的內容專案

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

另一種方式: 內部呼叫

這裡的另外一種方式的伺服器配置方式和流程完全一致, 就是第四步和第五步有所不同, 實現的原理是在phpstorm中設定執行的伺服器, 然後通過 debug 模式自動設定 XDEBUG_SESSION, 並且自動開啟監聽.

內部呼叫: 4) 設定 debug session

4.1) 設定 web 訪問的伺服器

例如我這裡的本地域名是 l.dailian.sour-lemon.com, 我們需要配置一個本地伺服器來開啟這個頁面, 我們首先配置一臺伺服器.

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

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

4.2) 配置除錯頁面

我們這裡建立的除錯頁面的型別是 PHP Web Application, 伺服器選擇的是剛才已經建立好的伺服器

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

內部呼叫: 5) 執行測試頁面

這樣執行的情況下上面的 2.2) 開啟phpstorm 資料監聽 步驟可以忽略掉, 這裡不需要開啟這個監聽.

5.1) 開始 debug

點選 debug 按鈕, 這裡會自動開啟一個頁面並且傳遞一個唯一的ID(可能是程式 ID)作為 debug 值

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

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

5.2) 檢視 debug 皮膚

開啟 debug 皮膚, 會看到相對應的監聽 idekey, 這裡和上一步設定的key是一致的, 同樣也和 cookie 中的設定的 XDEBUG_SESSION 值一致

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

其他幫助

1. 檢視相容性

第一次執行的時候可以通過 phpstorm 自帶的工具來檢查配置的相容性.

Run > Web Server Debug Validation

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

2. debug 幫助皮膚說明

[原] 在 PhpStorm 中使用 Xdebug 遠端除錯 PHP 程式(框架/原生均適用)

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

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

框架說明 Frames : 載入的檔案列表 Variables : 可以觀察到所有全域性變數、當前區域性變數的數值 Watches : 可以新增變數,觀察變數隨著程式執行的變化。

參考文章

相關文章