XDEBUG+PHPSTORM 開發 調試

來源:互聯網
上載者:User
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

點擊紅框內的 ...

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

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

    選擇了之後,底下就會檢測到我們的php的版本,和xdebug版本以及php.ini的配置。如果這裡的資訊和我們phpinfo 看到的不一樣,就要檢查下,是不是選擇的php的版本不對。

2. 配置debug

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

更改紅框中的連接埠為我們在php.ini中的配置的連接埠。我們在php.ini配置了9002.所以這裡也要寫上9002.不要寫錯了。否則就會有問題。

  • 然後再點擊我們DBGp Proxy

紅框中的配置。按照我們在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 新對象的類檔案,至調用行,並繼續執行調用行下面的代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.