Phpstorm+Xdebug断点调试PHP的方法


Posted in PHP onMay 14, 2018

为什么使用断点调试

大家可能会觉得使用var_dump和echo也能调试啊,为什么还要安装Xdebug断点调试呢?

确实是这样。但是var_dump和echo写的代码后面还要删除,而且明确是知道在哪打的,如果发现没有运行到打点的地方,还要修改代码再运行一次。而断点调试,可以在调试过程中动态打断点,逐行查看当前各个变量的值,甚至临时修改变量的值,更方便。建议大家使用Xdebug断点调试。

安装Xdebug

pecl install xdebug

如果是php7以下版本,需要加上版本号:

pecl install xdebug-2.5.5

pecl如果提示找不到该扩展,则使用源码编译。例如:

wget http://pecl.php.net/get/xdebug-2.5.5.tgz \
  && tar xzf xdebug-2.5.5.tgz && cd xdebug-2.5.5/ \
  && phpize \
  && ./configure \
  && make && make install

注:php5.6只能使用2.5及以下版本xdebug。

安装好后需要在php.ini进行配置:

[xdebug]
zend_extension=xdebug.so
xdebug.enable=1
xdebug.remote_enable=1
;如果开启此,将忽略下面的 xdebug.remote_host 的参数
;xdebug.remote_connect_back=1
;自动启动,无需XDEBUG_SESSION_START=1
xdebug.remote_autostart=1 
;宿主机IP
xdebug.remote_host=192.168.36.101 
xdebug.remote_port=19001
xdebug.remote_handler=dbgp

需要注意的是:

1、是zend_extension,不是extension;

2、xdebug.remote_autostart开启后,就不用手动在请求url里加上XDEBUG_SESSION_START=1了,只要Phpstorm开启断点调试就ok了。很方便;

3、remote_host配置的是安装有Phpstorm的机器,这点需要注意。如果php安装的机器和Phpstorm安装的机器是同一台机器,那么地址写127.0.0.1即可。

如果你采用的是docker环境,remote_host写宿主机的IP。

4、xdebug.remote_port端口我写的是19001,那么Phpstorm也需要修改。

配置完成后需要重启php-fpm。

配置Phpstorm

配置也很简单,配置端口即可:

Phpstorm+Xdebug断点调试PHP的方法

接下来就可以断点调试了。开启监听:

Phpstorm+Xdebug断点调试PHP的方法

请求url的时候就会自动捕捉到请求。

注意:

1、不要同时开启多个项目的监听;

2、监听远程代码的时候,如果宿主机和代码所在目录结构一致,会直接监听成功。否则,会提示设置代码映射关系。也可以手动设置:

Phpstorm+Xdebug断点调试PHP的方法

这里因为宿主机是windows,代码在linux里,目录不一致,做了映射。否则断点会失败。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
PHP 面向对象详解
Sep 13 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
如何使用Strace调试工具
Jun 03 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
php生成随机颜色方法汇总
Dec 03 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
Laravel 集成 Geetest验证码的方法
May 14 #PHP
PHP 多任务秒级定时器的实现方法
May 13 #PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 #PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 #PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 #PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 #PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 #PHP
You might like
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
vue中监听路由参数的变化及方法
2019/12/06 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
python中尾递归用法实例详解
2015/04/28 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
Django数据统计功能count()的使用
2020/11/30 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
银行会计业务的个人自我评价
2013/11/02 职场文书
大学生标准推荐信范文
2013/11/25 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
2015年环保局工作总结
2015/05/22 职场文书
酒桌上的开场白
2015/06/01 职场文书
签约仪式致辞
2015/07/30 职场文书
详解PyTorch模型保存与加载
2022/04/28 Python