XDEBUG+PHPSTORM 開發 調試

XDEBUG+PHPSTORM 開發 調試

在咱們開發過程當中。咱們若是常常性的echo、dump效率很低。因此咱們就可使用xdebug進行斷點調試。php

下面的教程以 Windows 操做系統爲例子。其餘操做系統相似。nginx

1. 下載xdebug

安裝xdebug前,請肯定本身的php版本和使用的TS或NTS。若是實在不清楚,能夠經過如下方式查看git

1536130176419

如上圖,第一個紅框就是如今使用的php的版本,github

第二個框就是你使用php編譯的X86仍是X64.web

第三個是表示加載的php.ini的位置。咱們會用到,後面須要改php.ini。就是改這個位置。必定不能改錯了。apache

第四個框,就是Thread Safety 若是是 diabled 就表示咱們用的PHP是NTS的。若是是enable 就表明是TS的。待會選擇xdebug的時候就會用到上面的信息。api

下載地址:https://xdebug.org/download.php瀏覽器

根據咱們上圖的信息,咱們選擇的應該是php7.1 x86 nts的 xdebug拓展服務器

32bit 就是32位操做系統。也就是x86. 若是後面沒有寫TS ,就表明這個拓展是NTS的。不要選錯了。php7

1536130606998

2. 安裝Xdebug

將咱們上面下載好的拓展移動到 php 的 extension_dir 的目錄。若是不知道本身的拓展目錄在哪。仍是能夠經過phpinfo查看

搜索 extension_dir 就是拓展所在的目錄。

1536130879493

3. 配置Xdebug

打開 php.ini php.ini 的位置。經過**phpinfo()**中進行查看。 以避免改錯位置。

在後面加上一下配置

[Xdebug]
;拓展的位置。這裏必定要zend_extesion zend_extension="php_xdebug-2.7.0alpha1-7.1-vc14-nts.dll" ;啓用性能檢測分析 xdebug.profiler_enable=on ;啓用代碼自動跟蹤 xdebug.auto_trace=on ;容許收集傳遞給函數的參數變量 xdebug.collect_params=on ;容許收集函數調用的返回值 xdebug.collect_return=on xdebug.remote_enable=1 xdebug.remote_handle="dbgp" xdebug.remote_mode="req" xdebug.remote_host="localhost" ;端口 能夠本身更改,不要衝突,待會須要用到 xdebug.remote_port=9002 xdebug.idekey="PHPSTORM" xdebug.collect_includes = 1 xdebug.remote_autostart = 1 ;指定堆棧跟蹤文件的存放目錄 xdebug.trace_output_dir="D:/debug" ;指定性能分析文件的存放目錄 xdebug.profiler_output_dir="D:/debug" xdebug.profiler_output_name = cachegrind.out.%t.%p

4. 驗證Xdebug

驗證Xdebug。一樣使用咱們的 phpinfo 進行驗證。記得改完配置,記得重啓apache或者nginx 或者其餘的web服務器

1536131596474

1536131772127

搜索xdebug。 看到上面的界面就是配置成功了。而後再檢查上面的配置是否是和你設置的一致。

PHPSTORM 整合Xdebug 進行斷點調試

1. 配置Cli Interpreter

settings -->Languages Frameworks ---> PHP

點擊紅框內的 ...

1536132188638

  • 先點擊下圖的 + 添加一個新的cli 。

  • 點擊 ... 選擇你的php.exe的位置。 這個php 必定是你的web用的。跟咱們配置Xdebug的要同樣。

    選擇了以後,底下就會檢測到咱們的php的版本,和xdebug版本以及php.ini的配置。若是這裏的信息和咱們phpinfo 看到的不同,就要檢查下,是否是選擇的php的版本不對。

1536132302256

2. 配置debug

settings -->Languages Frameworks ---> PHP --->Debug

1536132609448

更改紅框中的端口爲咱們在php.ini中的配置的端口。咱們在php.ini配置了9002.因此這裏也要寫上9002.不要寫錯了。不然就會有問題。

  • 而後再點擊咱們DBGp Proxy

1536132748160

紅框中的配置。按照咱們在php.ini中的配置進行填寫。

xdebug.idekey="PHPSTORM" xdebug.remote_host="localhost" xdebug.remote_port=9002

3. 配置Server

1536131936983

而後本身本地須要debug的host 、 端口

1536133092580

4. edit cofigure

點擊菜單欄中的run。 而後點擊edit Congiurations

1536133451273

在出來後的選項中,點擊 + 而後選擇 PHP Web Page

1536133508626

選擇你剛纔 添加的 server 以及起始的web地址。 點擊 apply 應用

1536133605461

6.開啓監聽

點擊下圖中的這個小電話的圖標。 讓你變綠色。

沒有監聽的狀態

1536133804975

正在監聽的狀態

1536133911407

7. 開啓調試

在咱們須要調試的代碼處,咱們須要加上一個斷點,而後程序運行到這個地方,就會停下來。下面以TP5爲例子。

1536134070135

而後咱們運行咱們的項目。就會發現瀏覽器卡住了,這個時候,咱們打開PHPstorm。就會發現。程序停下來了。

1536134215544

咱們能夠很清晰的看到上下文的變量的值。以及框架的執行的流程。這對咱們分析一個框架,是頗有幫助的。

而後咱們能夠進行單步調試,或者步入、跳出等操做

1536135094157

圖中,全部畫紅圈的就是經常使用到的工具。其具體功能介紹以下:

  • 從新請求

img

此工具,點擊後,當前調試全部變量所有銷燬,從新開啓一輪請求。即如同刷新頁面。

  • 執行到下一個斷點,暫停

img

此工具點擊後,繼續 Laravel 生命進程的路程,直到下一個斷點,暫停

  • 中止調試

img

此工具,中止調試,結束 Laravel 週期。

  • 變量欄

img

變量欄標籤,下面的內容是當前調試位置全部可以用到的變量(包含全局和局部),記住能用到就會顯示

  • 定位到當前調試的文件以及行

img

此工具的做用是當調試行文件關閉了,或者代碼視圖跑到其它位置了,點擊它,就能從新定位到調試文件以及調試行

  • 跳過當前調試行代碼要執行函數,直接返回結果

img

此工具的做用是當調試行代碼有調用函數,包含文件,new 新對象時,可以不進入相應函數、文件、類中,直接返回其調用的結果,在當前行中,執行下文

  • 進入和強制進入調用的函數內

img

此工具功能正好和上面的相反,即進入和強制進入當前調試行將要調用的函數、方法、包含的文件、new的新對象類文件中,執行相應代碼

  • 跳出正在調用的函數

img

跳出正在執行的函數、方法、包含的文件、new 新對象的類文件,至調用行,並繼續執行調用行下面的代碼

相關文章
相關標籤/搜索