PHPStorm 初遇 Xdebug (xdebug代碼調試及性能分析)


centos 7 下PHP7安裝xdebug

```shell
# 下載xdebug
wget https://xdebug.org/files/xdebug-2.7.2.tgz
# 解壓
tar -xf xdebug-2.7.2.tgz
# 建立php的外掛模塊
cd xdebug-2.7.2.tgz
/usr/local/php/bin/phpize
# 生成 Makefile
./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
# 編譯並安裝
make -j4 && make install
# 配置 php.ini
vim /usr/local/php/etc/php.ini
#添加
;;;;;;;;;;;;;;;;;;
; xdebug;;;;;;;;;;
;;;;;;;;;;;;;;;;;;
zend_extension=xdebug.so
xdebug.idekey = PHPSTORM
xdebug.remote_enable = 1
xdebug.remote_mode = req
xdebug.remote_handler = dbgp
xdebug.remote_connect_back = 1
xdebug.remote_port = 9999
xdebug.remote_autostart = 1
xdebug.remote_log = /usr/local/php/var/log/xdebug.log
# 這是xdebug的性能分析工具
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir="/opt/web/phpc/xdebug/profile"
;xdebug.profiler_enable_trigger_value="lintest"
xdebug.profiler_output_name="cachegrind.out.%R"
```

注:

  1. 關於make -j 參數

  2. 安裝后重啟一下php-fpm,使用查看是否安裝成功

    service php-fpm restart 
    /usr/local/php/bin/php -m | grep xdebug
    /usr/local/php/bin/php --ri xdebug | grep Version
    
    1. 關於php-fpm重啟命令,可以參考Centos7源碼編譯安裝PHP7.2(生產環境)后半部分
  3. 關於xdebug profiler 參考 使用xdebug profiler 對php做性能分析

    1. 訪問php項目,記得在請求參數帶上 XDEBUG_PROFILE, 類似 http://127.0.0.1:5671/my?XDEBUG_PROFILE
    2. xdebug應該已經在我們配置的分析文件保存目錄產生了文件,如果沒有的話可以看看 /tmp  文件夾下有沒有
    3. 安裝圖形界面工具
    	1. git clone https://github.com/jokkedk/webgrind.git
    	2. 進入 webgrind 修改config.php  文件 的  $profilerDir 變量
    	3. 在nginx vhost下配置一個虛擬主機 指向 webgrind/index.php 或 (本地的話)php -S 0.0.0.0:8081 index.php
    

phpstorm + xdebug 調試 遠程 web應用

  1. 打開項目,點擊file ,打開settings
  2. Language&Frameworks 下的 PHP 不需要設置
  3. 找到 Language&Frameworks 下的 PHP 里面的Debug 將端口設置為php.ini中配置的端口(上面設置的9999)
  4. 找到PHP 下面的 Servers 點擊 + ,Host 填訪問nginx中對應項目配置的域名,端口填nginx中配置的訪問端口,Debugger選擇Xdebug,然后選use path mappings ,設置一下文件映射(路徑均填絕對路徑),保存
  5. (在run按鈕旁邊)編輯運行環境,點擊 + 選擇 PHP Web Page ,然后 Server選上面配置的那個server,然后保存
  6. 打斷點,開啟debug的監聽,再本地刷新頁面就可以開始調試了

phpstorm + xdebug 調試遠程 swoole服務 應用

  1. 打開項目,點擊file,打開settings

  2. 找到 Language&Frameworks 下的 PHP ,選擇PHP版本,然后選擇cli Interpreter(不要選本地安裝的PHP),點擊+ 然后選擇from docker ... 這一項,然后選擇 Deployment configuration 這一項,選擇配置過的sftp配置,修改PHP解釋器的絕對路徑(遠程服務器的),我的是 /usr/local/php/bin/php 確定保存

  3. 找到 Language&Frameworks 下的 PHP 里面的Debug 將端口設置為php.ini中配置的端口(上面設置的9999)

  4. 找到PHP 下面的 Servers 點擊 + ,host 填 遠程服務器的ip,端口填22,Debugger選擇Xdebug,然后選use path mappings ,設置一下文件映射(路徑均填絕對路徑),保存

  5. 設置斷點,開始調試

    注意:

    1. 上面說的sftp配置

      1. 點擊 Tools/Deployment/Configuration,然后點擊 + ,選擇sftp,填寫ip和端口號及身份認證信息,然后填寫服務器上對應的項目的絕對路徑,保存。
      2. Tools/Deployment/Automatic Upload,這樣每次修改的代碼都會被同步到遠程服務器
    2. 調試的時候,需要先在必要的位置打斷點,然后點擊debug按鈕啟動調試,使用工具或者另一個項目連接swoole開始調試。

      1. debug的時候會連接遠程服務器開啟swoole進程,如果報錯,可能需要將遠程服務器swoole的進程關掉

      2. 每次修改swoole服務端的代碼都需要關掉swoole進程,然后再點擊debug按鈕

      3. 殺掉swoole進程的命令

        ps -ef | grep "啟動服務文件" | awk '{print $2}' | xargs kill -3
        

注:本文是根據查閱的資料及自己實際使用情況所寫
如需轉載請注明出處:https://www.cnblogs.com/zhuchenglin/p/12075046.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM