Xdebug是一個(gè)PHP擴(kuò)展,可以幫助我們PHP開發(fā)人員更方便地對PHP代碼進(jìn)行調(diào)試;它有許多強(qiáng)大的功能,其中包括:
- 它包含一個(gè)用于IDE的單步調(diào)試器
- 它升級了PHP的var_dump()函數(shù)
- 它為通知,警告,錯(cuò)誤和異常添加堆棧跟蹤
- 它具有記錄每個(gè)函數(shù)調(diào)用和向磁盤分配變量的功能
所以我們可以通過Xdebug結(jié)合PHP比較熱門的IDE工具PHPstorm對我們的代碼進(jìn)行斷點(diǎn)調(diào)試,以方便我們分析框架源碼,找出bug,分析代碼性能瓶頸等等。具體效果如下:

image.png
本文將為大家介紹如何在Windows上安裝它,以及配置phpstorm,在上面進(jìn)行斷點(diǎn)調(diào)試。
一、Xdebug在window上的安裝
1,登錄官網(wǎng)下載與自己PHP版本相對應(yīng)的xdebug擴(kuò)展
注意與安裝其他PHP擴(kuò)展相似,必須下載跟自己PHP版本一致的擴(kuò)展;所以我們可以把自己的phpinfo的全部內(nèi)容Ctrl+A全選,Ctrl+C復(fù)制到xdebug分析工具(https://xdebug.org/wizard)上面,然后點(diǎn)擊分析,就能得到與你PHP版本相對于的xdebug擴(kuò)展了,直接下載。

image.png
2,把下載好的擴(kuò)展移動(dòng)到自己的PHP目錄下的ext文件夾中

image.png
3,修改php配置文件 php.ini,添加如下配置,部分配置可按需增刪
;指定Xdebug擴(kuò)展文件的絕對路徑
zend_extension = D:\phpstudy\Extensions\php\php7.3.4nts\ext\php_xdebug-2.9.8-7.3-vc15-nts-x86_64.dll
;啟用性能檢測分析
xdebug.profiler_enable=On
;啟用代碼自動(dòng)跟蹤
xdebug.auto_trace=On
;允許收集傳遞給函數(shù)的參數(shù)變量
xdebug.collect_params=On
;允許收集函數(shù)調(diào)用的返回值
xdebug.collect_return=On
;指定堆棧跟蹤文件的存放目錄
xdebug.trace_output_dir="D:\phpstudy\Extensions\tmp\xdebug"
;指定性能分析文件的存放目錄
xdebug.profiler_output_dir="D:\phpstudy\Extensions\tmp\xdebug"
xdebug.profiler_output_name=cachegrind.out.%p
xdebug.remote_enable=On
xdebug.remote_port=19000
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.var_display_max_depth=10
xdebug.idekey= PHPSTROM
4,重啟WebServer(Apache或Nginx等),再次打開phpinfo,Ctrl+F搜索:xdebug,如果搜索到該擴(kuò)展,則證明安裝成功

image.png
二、配置phpstorm
1,在【File】->【Settings】->【Languages & Frameworks】->【PHP】的servers中配置xdebug服務(wù),添加如下配置:

image.png
2,在【File】->【Settings】->【Languages & Frameworks】->【PHP】->【Debug】中配置 debug port 為php.ini中配置的xdebug.remote_port。

image.png
3,打開【run】--【Edit configurations】添加配置:

image.png
4,單擊行號與代碼之間的空白處,即可設(shè)置斷點(diǎn)。開啟debug監(jiān)聽,點(diǎn)擊綠色的開始按鈕或者旁邊的甲殼蟲即可開始調(diào)試。

image.png
5,開始調(diào)試后,下方就會展示出調(diào)試數(shù)據(jù),可以瀏覽到腳本執(zhí)行到當(dāng)前斷點(diǎn)時(shí),各個(gè)變量的值,對應(yīng)的代碼旁邊也有展示各個(gè)值,可以清楚知道當(dāng)前變量的值是什么。點(diǎn)擊右下角綠色的繼續(xù)按鈕,即可跳到下一個(gè)斷點(diǎn)。

image.png
到此,Xdebug的安裝使用就介紹完了,所謂工欲善其事,必先利其器。它還有其他很多功能幫助我們?nèi)粘i_發(fā)調(diào)試,例如很多方便的函數(shù),我們直接調(diào)用就能得出:
- xdebug_time_index()返回自腳本開始以來的當(dāng)前時(shí)間索引(以秒為單位)。
- xdebug_peak_memory_usage() 返回到目前為止腳本使用的最大內(nèi)存量。
- xdebug_get_stack_depth() 返回堆棧深度級別。
等等這些結(jié)果,方便我們?nèi)フ{(diào)試,其他更多函數(shù)與更多用法請參考官方文檔,大神們可以直接啃英文文檔,像我這樣的菜鳥也可以用谷歌翻譯:

image.png