對於我這麼一個渣渣php碼農,平時總以爲echo、var_dump、print_r就能知足個人調試需求了,最近公司開始一個新項目,要大量閱讀調試舊的源碼,echo和var_dump開始不夠用了,因而裝了一下xdebug擴展,配合phpstrom使用,效率啪啪啪往上漲,後悔用晚了,下面就如何安裝和使用xdebug作一個簡單的說明介紹。php
一、什麼是Xdebug?nginx
Xdebug是一個開放源代碼的PHP程序調試器(即一個Debug工具),能夠用來跟蹤,調試和分析PHP程序的運行情況。web
二、如何下載安裝Xdebug?apache
(1)下載app
官網下載地址:https://xdebug.org/download.php工具
咱們能夠根據本身使用的php環境包括php版本、操做系統等選擇好適配的版本擴展操作系統
(2)安裝開放源代碼
對於win環境下開發的用戶來講,通常使用的都是wamp或phpstudy這樣的集成環境,咱們只須要把dll(動態連接庫)文件放到你的開發環境php對於版本下的目錄便可,不過通常都會有內置xdebug.dll,若是沒有的話,那就須要本身動手了。debug
例如,在phpstudy中,全部dll擴展防止的目錄都是在對應的php版本目錄下的ext文件夾,如圖所示:3d
對於Linux用戶來講,則要下載源碼包就行編譯安裝了
tar -xvzf xdebug-2.1.2.tgz
cd xdebug-2.1.2
phpize (若是phpize沒有這個command,須要安裝一次phpize。phpize可讓php支持擴展模塊)安裝phpize:sudo apt-get install php5-dev
若是安裝了繼續進行下面命令
./configure
make
make install
cp modules/xdebug.so /usr/lib/php5/20090626+lfs將xdebug.so文件移到php5下面
三、配置php.ini
對於win的用戶
profiler_開頭的配置項是xdebug的輸出數據相關配置
Profiler_enable很明顯表示是否啓用xdebug的輸出數據到文件中
Prifiler_output_dir是xdebug輸出數據文件的目錄
Remote開頭的幾個配置項也注意設置好
Dll文件的位置也要確認正確無誤
對於Linux的用戶
配置項和內容也是大同小異,不過引入擴展文件應該是.so後綴的
四、重啓apache或nginx
win下的集成環境注意啓用擴展
五、咱們在根目錄下寫一個index.php,內容以下:
<?php phpinfo(); ?>
訪問localhost
咱們能夠看到xdebug的相關配置,特別注意的是一個port的設置
記住端口號,咱們在下面配置phpstrom的xdebug時會用到,假如你的9000端口被其餘軟件應用所佔用,要麼關掉其餘佔用了9000的進程,要麼重置xdebug的端口號,但建議仍是採起第二種方式。
六、配置phpstrom的xdebug
(1)打開File -> Settings
(2)在Settings中搜索xdebug,檢查端口號是否與咱們剛纔phpinfo()中顯示的配置相同,改好注意apply
(3)添加php web application
點擊Edit Configurations進入配置,下面的localhost和hezubao是我已經作好的配置
添加server站點
Name是咱們xdebug的配置名稱
Server是站點配置
Start URL是站點入口
配置好後,apply
七、調試使用
往事具有,如今咱們來嘗試使用一下,在上面的配置中,我將localhost的入口設爲xdebug.php,如今在localhost的根目錄下新增一個php文件,編輯內容以下:
咱們設置第七行爲斷點,則代碼執行到第七行出會掛起暫停下來
如今咱們點擊那個甲蟲按鈕,就開始xdebug調試了
咱們能夠看到跳轉的網頁一直都是正在加載的狀態,說明代碼確實執行到某個地方掛起了
如今咱們回去看看phpstrom,左下方有輸出程序代碼中變量的值
下面咱們可使用Step Into的按鈕單步調試咱們的程序,調試過程當中程序中的變量會不斷顯示在變量輸出區域,以下圖所示:
八、Xdebug的其餘做用
很明顯,有了xdebug咱們再也不須要在代碼調試時對一些關鍵變量一個一個echo或var_dump了,並且咱們可使程序運行到斷點時掛起,從而更加精確地鎖定出bug的代碼的位置。同時Xdebug具備追溯代碼的跟蹤回溯功能,這樣在一些大型的程序的中,即便調用邏輯很複雜,咱們也能順蔓摸瓜一步步到達錯誤發生的地方。
除此以外,咱們可使用xdebug_time_index()來顯示腳本運行時間;可使用xdebug_memory_usage()來測定腳本佔用內存;同時咱們還能夠查詢xdebug的輸出日誌來查詢程序運行的相關信息。