XDEBUG+PHPSTORM 開發 調試
在我們開發過程中。我們如果經常性的echo、dump效率很低。所以我們就可以使用xdebug進行斷點調試。
下面的教程以 Windows 作業系統為例子。其他動作系統類別似。
1. 下載xdebug
安裝xdebug前,請確定自己的php版本和使用的TS或NTS。如果實在不清楚,可以通過以下方式查看
如,第一個紅框就是現在使用的php的版本,
第二個框就是你使用php編譯的X86還是X64.
第三個是表示載入的php.ini的位置。我們會用到,後面需要改php.ini。就是改這個位置。一定不能改錯了。
第四個框,就是Thread Safety 如果是 diabled 就表示我們用的PHP是NTS的。如果是enable 就代表是TS的。待會選擇xdebug的時候就會用到上面的資訊。
:xdebug.org/download.php
根據我們的資訊,我們選擇的應該是php7.1 x86 nts的 xdebug拓展
32bit 就是32位作業系統。也就是x86. 如果後面沒有寫TS ,就代表這個拓展是NTS的。不要選錯了。
2. 安裝Xdebug
將我們上面下載好的拓展移動到 php 的 extension_dir 的目錄。如果不知道自己的拓展目錄在哪。還是可以通過phpinfo查看
搜尋 extension_dir 就是拓展所在的目錄。
3. 配置Xdebug
開啟 php.ini php.ini 的位置。通過**phpinfo()**中進行查看。 以免改錯位置。
在後面加上一下配置
[Xdebug];拓展的位置。這裡一定要zend_extesionzend_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=onxdebug.remote_enable=1xdebug.remote_handle="dbgp"xdebug.remote_mode="req"xdebug.remote_host="localhost";連接埠 可以自己更改,不要衝突,待會需要用到xdebug.remote_port=9002xdebug.idekey="PHPSTORM"xdebug.collect_includes = 1xdebug.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伺服器
搜尋xdebug。 看到上面的介面就是配置成功了。然後再檢查上面的配置是不是和你設定的一致。
PHPSTORM 整合Xdebug 進行斷點調試1. 配置Cli Interpreter
settings -->Languages Frameworks ---> PHP
點擊紅框內的 ...
2. 配置debug
settings -->Languages Frameworks ---> PHP --->Debug
更改紅框中的連接埠為我們在php.ini中的配置的連接埠。我們在php.ini配置了9002.所以這裡也要寫上9002.不要寫錯了。否則就會有問題。
紅框中的配置。按照我們在php.ini中的配置進行填寫。
xdebug.idekey="PHPSTORM"xdebug.remote_host="localhost"xdebug.remote_port=9002
3. 配置Server
然後自己本地需要debug的host 、 連接埠
4. edit cofigure
點擊功能表列中的run。 然後點擊edit Congiurations
在出來後的選項中,點擊 + 然後選擇 PHP Web Page
選擇你剛才 添加的 server 以及起始的web地址。 點擊 apply 應用
6.開啟監聽
點擊中的這個小電話的表徵圖。 讓你變綠色。
沒有監聽的狀態
正在監聽的狀態
7. 開啟調試
在我們需要調試的代碼處,我們需要加上一個斷點,然後程式運行到這個地方,就會停下來。下面以TP5為例子。
然後我們運行我們的項目。就會發現瀏覽器卡住了,這個時候,我們開啟PHPstorm。就會發現。程式停下來了。
我們可以很清晰的看到內容相關的變數的值。以及架構的執行的流程。這對我們分析一個架構,是很有協助的。
然後我們可以進行單步調試,或者步入、跳出等操作
圖中,所有畫紅圈的就是常用到的工具。其具體功能介紹如下:
此工具,點擊後,當前調試所有變數全部銷毀,重新開啟一輪請求。即如同重新整理頁面。
此工具點擊後,繼續 Laravel 生命進程的路程,直到下一個斷點,暫停
此工具,停止調試,結束 Laravel 周期。
變數欄標籤,下面的內容是當前調試位置所有能夠用到的變數(包含全域和局部),記住能用到就會顯示
此工具的作用是當調試行檔案關閉了,或者程式碼檢視跑到其它位置了,點擊它,就能重新置放到調試檔案以及調試行
此工具的作用是當調試行代碼有調用函數,包含檔案,new 新對象時,能夠不進入相應函數、檔案、類中,直接返回其調用的結果,在當前行中,執行下文
此工具功能正好和上面的相反,即進入和強制進入當前調試行將要調用的函數、方法、包含的檔案、new的新對象類檔案中,執行相應代碼
跳出正在執行的函數、方法、包含的檔案、new 新對象的類檔案,至調用行,並繼續執行調用行下面的代碼