Xdebug 是 PHP 最強大的除錯與效能分析擴展,提供堆疊追蹤、變數檢視、程式碼覆蓋率、效能剖析等功能。本文整理 Windows 與 Linux 環境的安裝步驟、關鍵參數設定、常見問題與進階用法。
php -v)、Thread Safety(phpinfo() 查看 Thread Safety)、VC 編譯版本下載 .dll。ext 目錄(如 C:\php\ext\php_xdebug.dll)。php --ini):[Xdebug]
zend_extension="C:/php/ext/php_xdebug.dll"
xdebug.mode=debug,develop,trace,profile
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.log="C:/php/xdebug.log"
xdebug.idekey=VSCODE
注意:必須用 zend_extension 載入,不可用 extension。
wget https://xdebug.org/files/xdebug-3.3.1.tgz
tar -xzf xdebug-3.3.1.tgz
cd xdebug-3.3.1
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
# 輸出會提示 .so 路徑,加入 php.ini
echo 'zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20220829/xdebug.so"' >> /usr/local/php/lib/php.ini
| 參數 | 預設 | 說明 |
|---|---|---|
| xdebug.mode | develop | 功能模組組合:debug, develop, trace, profile, coverage, gcstats |
| xdebug.start_with_request | no | yes/trigger:自動/條件啟動除錯 |
| xdebug.client_port | 9003 | DBGp 協定通訊埠(IDE 監聽埠) |
| xdebug.log | 除錯連線日誌,排查連線失敗必備 | |
| xdebug.output_dir | /tmp | trace/profile 檔案輸出目錄 |
| xdebug.var_display_max_depth | 3 | var_dump 最大深度 |
zend_extension、確認路徑正確、重啟 PHP-FPM/Apache。xdebug.client_host、xdebug.client_port、IDE 監聽埠是否一致。xdebug.mode=profile,或設 xdebug.start_with_request=trigger 配合 XDEBUG_TRIGGER Cookie 啟動。# 啟用剖析
xdebug.mode=profile
xdebug.output_dir=/tmp/xdebug
xdebug.start_with_request=trigger
# 瀏覽器安裝 Xdebug Helper 擴充套件,設定 IDE Key 為 "PHPSTORM"
# 訪問頁面後,/tmp/xdebug 會產生 cachegrind.out.xxx
# 使用 KCacheGrind (Linux) / QCacheGrind (Win) / WebGrind (Web) 分析
PHP Debug 擴充套件,launch.json 設定 "port": 9003。嚴禁在生產環境啟用 Xdebug。若需線上排查,可短暫啟用 xdebug.mode=trace 配合 xdebug.start_with_request=trigger,完成後立即關閉並重啟 PHP。