PHP 調試 - Xdebug

PHP 調試指南.pdf
PHP 程序員的調試技術php

根據要調試的對象的不一樣,採起的方法也不同:html

  • 調試 web 應用:對於 web 應用,能夠在瀏覽器中安裝插件,或者在 IDE 中設置,下面的設置二選一便可。
    • Get/Post 請求或 Cookie 中添加 XDEBUG_SESSION_START=session_name,使 Xdebug 知道這個請求應該鏈接 IDE 進行調試。通常由 IDE 提供這個功能。
    • 安裝瀏覽器插件。
  • 調試其餘應用:調試命令行程序或者單元測試時,不須要在瀏覽器中查看效果,則省去了上面的步驟。

下載並開啓 Xdebug

經過 Xdebug,能夠在 IDE 的終端進行調試,能夠單步調試、查看調用棧和變量值。此外,Xdebug 還能夠分析性能(XHProf 也能夠分析性能)。程序員

Xdebug 支持的功能有:web

下載安裝

下載地址:https://xdebug.org/download.phpchrome

我用的 PHP 是 7.2,64位,非線程安全的版本,因此下載 PHP 7.2 VC15 (64 bit) 這個版本的 Xdebug。segmentfault

下載完成後,將其放入 PHP 安裝目錄下的 ext 目錄。而後修改 php.ini 文件(或者專門創建獨立的 ini 配置文件給 Xdebug 用)添加以下內容:數組

[Xdebug]
zend_extension="c:/php/ext/php_xdebug-2.1.0-5.3-vc6.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001

經過命令行執行 php -v,輸出中包含 Xdebug 的版本信息,則表示安裝成功:瀏覽器

C:\Users\Administrator>php -v
PHP 7.2.7 (cli) (built: Jun 19 2018 23:13:48) ( NTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.7.0alpha1, Copyright (c) 2002-2018, by Derick Rethans

注意,[Xdebug] 在 Linux 須要區分大小寫。安全

設置 Xdebug

Xdebug 是 C/S 結構,Client 是 PHP 中安裝的 Xdebug,Server 是 IDE 中安裝的插件。PHP 腳本運行時,Xdebug 能夠向 IDE 報告運行狀態,並將調試信息發送給 IDE。服務器

Xdebug

Xdebug 有大量的配置參數能夠設置,完整設置能夠參考 這裏,經常使用設置以下:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;遠程調試相關設置
;用於驗證服務器,只有 Xdebug 的服務器與客戶端的 idekey 匹配時纔會發送調試消息
xdebug.idekey="PhpStorm"
;開啓遠程調試
xdebug.remote_enable=on
;自動啓動遠程調試,對於不是 web 應用的 PHP 程序來講,必須開啓
xdebug.remote_autostart=on
xdebug.remote_mode="req"
xdebug.remote_log="d://lnmp/log/phpxdebug.log"
xdebug.remote_handler="dbgp"
;遠端 Xdebug 服務器的 IP 地址
xdebug.remote_host=localhost
;遠端 Xdebug 服務器的端口,在 IDE 中設置
xdebug.remote_port=9001

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;trace 代碼跟蹤相關設置
;是否容許Xdebug跟蹤函數調用,跟蹤信息以文件形式存儲,默認值爲0。用於調試 auto_prepend_file 中的代碼
xdebug.auto_trace = 1
;代碼跟蹤日誌文件位置,默認值爲/tmp。須要先新建這個目錄,並設置讀寫權限
xdebug.trace_output_dir=d://lnmp/log/php
;函數調用跟蹤信息輸出文件命名規則,默認爲 trace.%c
xdebug.trace_output_name=trace.%c.%p
;是否容許 Xdebug 跟蹤函數參數,默認值爲0
xdebug.collect_params = 4
xdebug.collect_includes = On
;是否容許 Xdebug 跟蹤函數返回值,默認值爲0
xdebug.collect_return = On
xdebug.show_mem_delta = On
;設置數組或者對象顯示的最大層級,默認是3
xdebug.var_display_max_depth = 2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;profile 性能探查相關設置
;打開性能分析器,默認值爲0
xdebug.profiler_enable=1
;性能分析文件的存放位置,默認值爲/tmp。須要先新建這個目錄,並設置讀寫權限
xdebug.profiler_output_dir=d://lnmp/log/php
;性能分析文件的命名規則,默認值爲cachegrind.out.%p
xdebug.profiler_output_name=profiler.%c.%p

配置 IDE(以 PhpStorm 爲例)

PhpStorm 設置項參考手冊

調試非 web 應用

PHP 中的 Xdebug 配置完成後,接下來須要在 IDE 中設置 Xdebug 服務器,經過監聽端口來獲取代碼運行狀態。

添加 PHP 解釋器

設置的路徑:打開 IDE 後,依次選擇 File | Settings | Languages & Frameworks | PHP,選擇 PHP 版本和腳本位置便可。

這裏寫圖片描述

設置 Xdebug

設置的路徑:打開 IDE 後,依次選擇 File | Settings | Languages & Frameworks | PHP | Debug,能夠看到 Debug 相關設置。最重要的是端口號,默認是 9000,但這會跟 PHP-FPM 衝突,因此這裏改成 9001。同時,須要在 php.ini 配置文件中經過 xdebug.remote_port=9001 告訴 Xdebug 客戶端,服務器監聽的端口號是 9001。

當前設置頁面的參考手冊在 這裏

Debug

調試 web 應用

Debugging PHP Web Applications with Run Debug Configurations

PhpStorm 中能夠經過 Run | Edit Configuration 進入 Run/Debug Configuration 調試設置頁面,在這裏添加測試項目後,點擊調試按鈕後,IDE 會自動打開瀏覽器,輸好網址並添加這個字符串 XDEBUG_SESSION_START=session_name
這裏寫圖片描述

設置 Xdebug 代理

字段 描述
IDE key 指定代理服務器的名稱以標識 IDE 中的鏈接。這應該是當前活動的 php.ini 配置文件中 xdebug.idekey 設置的值。
Host 指定 Xdebug 代理服務器所在的主機。
Port 指定在代理調試會話期間 PhpStorm 將偵聽的端口。

這裏寫圖片描述

配置 debug 參數

配置瀏覽器

Xdebug 和 IDE 配置完成後,就能夠調試非 web 應用了。對於須要在瀏覽器中調試的 web 應用,還須要在瀏覽器中安裝插件,Chrome 直接安裝 Xdebug Helper 就好了,其餘瀏覽器能夠參考 這裏

插件安裝好後,打開 PhpStorm 並監聽 debug 鏈接(Run | Start Linstening for PHP Debug Connections,也就是調試工具欄中的小電話)。而後點擊剛安裝好的插件,選擇 debugging、profiling 或 tracing 會話,在瀏覽器端初始化一個鏈接。

這裏寫圖片描述

相關文章
相關標籤/搜索