Xdebug的安裝、配置和使用

對於我這麼一個渣渣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的輸出日誌來查詢程序運行的相關信息。

相關文章
相關標籤/搜索