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 ...
随机推荐
- HTTP报文(首部字段)
HTTP报文 请求报文/响应报文 结构: 报文首部 + (可选)报文主体(两者通过空行CR + LF来划分) 使用首部字段是为了给浏览器和服务器提供报文主体大小.所使用的语言.认证信息等内容 HTTP ...
- python爬虫--selenium模块.上来自己动!
selenium 基本操作 from selenium import webdriver from time import sleep #实例化一个浏览器对象 bro = webdriver.Chro ...
- 网络编程基础之socket套接字编程实现同一IP下的信息传输
鲁照山 1.网络协议的5层模型,每层内容的整理 2.画图描述三次握手四次挥手,和C端S端的状态 3.写一个客户端,实现给服务端发送hello world 字符串, 写一个服务端,将客户端发送的数据变成 ...
- CSRF与auth模块
目录 一.模拟实现中间件的编程思想 (一)impotlib模块 (二)实现功能的配置使用 二.跨站请求伪造CSRF (一)由来 (二)form表单的CSRF (三)ajax中的CSRF (1)通过da ...
- Linux Bash之通配符
通配符是我们在shell环境中不知不觉中都会用到的,有时甚至都不会考虑到去探究其实现过程,因为使用得太普遍了.而清晰地理解每一个过程,将有助于我们的分析和调试. 说白了,通配符就是在 shell 环境 ...
- 如何在云服务器上自动运行.py文件
如果你在云服务器上运行的目的是保持一直运行,那就继续往下看吧. 有很多种方法,我这里说的是在linux上操作的一种. 利用screen会话分离. 因为在Screen环境下,所有的会话都独立的运行,并拥 ...
- javascript的ES6学习总结(第三部分)
1.ES6中的面向对象的类 1.1.定义类 在ES5中,我们写一个类,通常是这么写的 function Person(name,age){ this.name = name; this.age = a ...
- 这几天加班熬夜把所有Python库整理了一遍,非常全面!
库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码.colorama 主要用来给文本添加各种颜色,并且非常简单易用.Prettytable 主要用于在终端或浏览器端构建格 ...
- HTML连载57-相对定位和绝对定位
一.定位流 1.分类 (1)相对定位: (2)绝对定位 (3)固定定位 (4)静态定位 2.什么相对定位 相对定位就是相对于自己以前在标准流中的位置来移动. 例子: <style> div ...
- Hack the Breach 2.1 VM (CTF Challenge)
主机扫描: ╰─ nmap -p- -A 192.168.110.151Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-29 09:48 CSTN ...