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

posted @ 2019-12-20 21:01  lin_zone  阅读(...)  评论(...编辑  收藏