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"
```
注:
安装后重启一下php-fpm,使用查看是否安装成功
service php-fpm restart
/usr/local/php/bin/php -m | grep xdebug
/usr/local/php/bin/php --ri xdebug | grep Version
- 关于php-fpm重启命令,可以参考Centos7源码编译安装PHP7.2(生产环境)后半部分
关于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应用
- 打开项目,点击file ,打开settings
- Language&Frameworks 下的 PHP 不需要设置
- 找到 Language&Frameworks 下的 PHP 里面的Debug 将端口设置为php.ini中配置的端口(上面设置的9999)
- 找到PHP 下面的 Servers 点击 + ,Host 填访问nginx中对应项目配置的域名,端口填nginx中配置的访问端口,Debugger选择Xdebug,然后选use path mappings ,设置一下文件映射(路径均填绝对路径),保存
- (在run按钮旁边)编辑运行环境,点击 + 选择 PHP Web Page ,然后 Server选上面配置的那个server,然后保存
- 打断点,开启debug的监听,再本地刷新页面就可以开始调试了
phpstorm + xdebug 调试远程 swoole服务 应用
打开项目,点击file,打开settings
找到 Language&Frameworks 下的 PHP ,选择PHP版本,然后选择cli Interpreter(不要选本地安装的PHP),点击+ 然后选择from docker ... 这一项,然后选择 Deployment configuration 这一项,选择配置过的sftp配置,修改PHP解释器的绝对路径(远程服务器的),我的是 /usr/local/php/bin/php 确定保存
找到 Language&Frameworks 下的 PHP 里面的Debug 将端口设置为php.ini中配置的端口(上面设置的9999)
找到PHP 下面的 Servers 点击 + ,host 填 远程服务器的ip,端口填22,Debugger选择Xdebug,然后选use path mappings ,设置一下文件映射(路径均填绝对路径),保存
设置断点,开始调试
注意:
上面说的sftp配置
- 点击 Tools/Deployment/Configuration,然后点击 + ,选择sftp,填写ip和端口号及身份认证信息,然后填写服务器上对应的项目的绝对路径,保存。
- Tools/Deployment/Automatic Upload,这样每次修改的代码都会被同步到远程服务器
调试的时候,需要先在必要的位置打断点,然后点击debug按钮启动调试,使用工具或者另一个项目连接swoole开始调试。
debug的时候会连接远程服务器开启swoole进程,如果报错,可能需要将远程服务器swoole的进程关掉
每次修改swoole服务端的代码都需要关掉swoole进程,然后再点击debug按钮
杀掉swoole进程的命令
ps -ef | grep "启动服务文件" | awk '{print $2}' | xargs kill -3
注:本文是根据查阅的资料及自己实际使用情况所写
如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/12075046.html
PHPStorm 初遇 Xdebug (xdebug代码调试及性能分析)的更多相关文章
- NodeJS的代码调试和性能调优
本文转自我的个人博客. NodeJS 自 2009 年显露人间,到现在已经六个年头了,由于各种原因,中间派生出了个兄弟,叫做 iojs,最近兄弟继续合体,衍生出了 nodejs4.0 版本,这东西算是 ...
- PHP使用Xdebug进行远程调试
PHP使用Xdebug进行远程调试 翻译 by mylxsw posted on 2014/07/14 under 技术文章 > 编程语言 Xdebug提供了客户端与PHP脚本进行交互的接口,这 ...
- AbsInt — 确保代码安全的性能/资源分析工具套件
德国AbsInt公司是一家安全苛求软件研发.确认.验证和认证工具链的供应商,能够为客户提供完整的确保代码安全的性能分析工具套件以及软件分析.验证.确认和编译器技术相关咨询服务.AbsI ...
- PHP 性能分析与实验(二)——PHP 性能的微观分析
[编者按]此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点.本文就改变 P ...
- 用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途
对 .NET 程序进行性能分析,dotTrace 能应对绝大多数的场景.在开启一个进程进行性能分析之前,我们会看到一些性能分析选项(Profiler Options).本文将介绍这几个选项的含义,并用 ...
- Python, Django 性能分析工具的使用
最近接手的 Apache HUE 项目性能出现了问题,线上经常出现响应时间过长或因为时间过长而无法服务等问题.老大让我准备弄个性能分析工具,便于追踪和分析平台当前的瓶颈出现在哪里. 那就搞起吧!先从代 ...
- 带你玩转Visual Studio——性能分析与优化
找到性能瓶颈 二八法则适合很多事物:最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的.在程序代码中也是一样,决定应用性能的就那20%的代码(甚至更少).因此优化实践中,我们将精力 ...
- phpstorm配合xdebug进行本地调试代码
笔者在使用的环境是wamp3.1.6和phpstorm2018 ,php选择的环境是php7.2 1. 在php.ini中添加xdebug的配置信息 首先建议是先找对php.ini的位置,可以在php ...
- phpStorm中使用xdebug断点调试php代码
配置好xdebug,也能使得phpstorm像java哪像跑断点调试,爽的一笔!!! 下载xdebug并配置 [XDebug] zend_extension=php_xdebug-2.4.0rc3-5 ...
随机推荐
- vbs 脚本 获取机器名/IP/MAC
strComputer = "."strMesseage="" Set objWMIService = GetObject("winmgmts:{im ...
- 小白的springboot之路(十)、全局异常处理
0.前言 任何系统,我们不会傻傻的在每一个地方进行异常捕获和处理,整个系统一般我们会在一个的地方统一进行异常处理,spring boot全局异常处理很简单: 介绍前先说点题外话,我们现在开发系统,都是 ...
- 12个超好用的IntelliJ IDEA 插件!你用过几个?
一.前言 IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了. 其实笔者也是一枚从Eclipse转IDEA的探索者,随着 ...
- autocad 二次开发 最小包围圆算法
autocad 二次开发 最小包围圆算法 主要实现了在模型空间下的得到一个包围所有图元的最小圆,该算法的思路是这样:1.从点集中随机选出两个点作为直径对圆进行初始化.2.判断下一个点p是否在圆中,如果 ...
- 细解JavaScript ES7 ES8 ES9 新特性
题记:本文提供了一个在线PPT版本,方便您浏览 细解JAVASCRIPT ES7 ES8 ES9 新特性 在线PPT ver 本文的大部分内容译自作者Axel Rauschmayer博士的网站,想了解 ...
- Node6-1单元测试mocha
1.初步简单的测试 在src新建一个math.js的文件.src/math.js module.exports ={ add:(...args)=>{ return args.reduce((p ...
- CCF-CSP题解 201809-3 元素选择器
题目要求写一个简易的CSS Selector. 首先用结构体\(<lev,label[],hasId,id[]>\)存储元素.其中\(lev\)表示元素在html树中的深度(这个是因为逻辑 ...
- git 知识,适合新手 滤清思路
1,密钥 (公钥和私钥) @ 公钥放在服务器上(说白了这里的服务器就是远程仓库, 就是谁建立的远程仓库这个公钥就放在他的ssh设置那) @ 私钥 放在本地就行,不用动,就是你生产密钥的.ssh 文件里 ...
- 《Java基础知识》Java注解"@"详解
Java注解含义: Java注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的.Java注解又叫java标注,java提供了一套机制,使得 ...
- 云服务器配置 docker java mysql mongodb redis nginx 环境
磁盘挂载 fdisk -l #查看磁盘列表 mkfs.ext4 /dev/vdb #格式化磁盘 mount /dev/vdb /data #挂载磁盘在/data echo '/dev/vdb /dat ...