【PHP】XDebug+VS Code除錯PHP頁面

東方慫天發表於2020-09-26

前言

最近解除安裝了IDEA,因為沒有啟用碼了……
因此我換上了Visual StudioXamarin來使用C#開發Android應用,但IDEA解除安裝了,所以自然也不能用IDEA來除錯我的PHP頁面了,所以不得不用Visual Studio Code來除錯我寫的PHP頁面了。

安裝XDebug外掛

獲取PHP版本資訊

不同的PHP對應了不同的XDebug版本,如果版本不對,我也不知道會發生啥,反正按自己的版本下載就對了!
我們現在PHP裡輸出phpinfo()資訊,檢視ArchitectureZend Extension Build這兩個值
ArchitectureZend Extension Build
我這裡顯示的是X64API320190902,TS,VC15,記錄這兩個值和自己的PHP版本。

下載對應的XDebug外掛

下載地址:外掛下載地址
從圖裡就可以看到了,x64對應下載64-bit版本,PHP版本務必對應,然後Zend Extension Build那裡記得看是否TS以及相應的VC版本,然後我們把它下載下來就行了。
版本對應關係
Windows系統這裡可以直接下載dll,如果是linux請自行下載編譯。
Linux的XDebug

外掛安裝

一般情況下,都會把下載下來的dll檔案放到相應的PHP擴充套件目錄下,即PHP對應的ext資料夾下。
當然也可以不放,因為在配置XDebug模組的zend_extension配置時就要寫上完整的路徑。
我個人比較守規矩,所以就把dll檔案放到PHP擴充套件目錄下。
PHP外掛目錄

配置檔案設定

外掛放到資料夾中後,就需要我們配置php.ini檔案的XDebug模組設定。
下面我給出我的配置,不過完整的XDebug配置遠不止這些引數,如果需要自己修改其他設定,可以百度一下。
這邊請注意xdebug.remote_port=9000埠號這條語句,這句話對應了XDebug的埠號,所以請務必記住自己自定義的埠號,我這邊定義的埠號為9000。

;xdebug支援
[xdebug]
zend_extension ="安裝PHP的根目錄/ext/php_xdebug-2.9.2-7.4-vc15-x86_64.dll"

xdebug.remote_enable = On
xdebug.remote_autostart = On
;啟用效能檢測分析
xdebug.profiler_enable = On
;啟用程式碼自動跟蹤
xdebug.auto_trace=On
xdebug.profiler_enable_trigger = On
xdebug.profiler_output_name = cachegrind.out.%t.%p
;指定效能分析檔案的存放目錄
xdebug.profiler_output_dir ="安裝PHP的根目錄/tmp"
xdebug.show_local_vars=0

;配置埠和監聽的域名
xdebug.remote_port= 9000
xdebug.remote_host="localhost"

檢查配置是否生效

重啟自己的環境,LNMP或者其他的環境,實在不會就重啟解決所有問題。
然後我們再次列印出phpinfo()的資訊,如果出現了XDebug的相關資訊則表示安裝成功,否則檢查XDebug安裝是否成功。
XDebug安裝成功

PHP Debug for VS Code

按上面的步驟弄好了,緊接著安裝VS CodePHP Debug外掛。
PHP Debug外掛
緊接著來到除錯頁面,進行對應launch.json的設定,這裡記得埠號要對應上面XDebug設定裡的埠號,我這邊是9000和上文對應。

{
    // 使用 IntelliSense 瞭解相關屬性。 
    // 懸停以檢視現有屬性的描述。
    // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

斷點除錯

到了這一步,自己寫PHP頁面進行測試吧,記得在伺服器網頁的根目錄底下斷點測試,不然沒用。
如有不對,請批評指正。

相關文章