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中使用Oracle数据库(2)
Oct 09 PHP
php cookis创建实现代码
Mar 16 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
深入php 正则表达式的学习探讨
Jun 06 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
PHP简单遍历对象示例
Sep 28 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
php微信公众号开发之校园图书馆
Oct 20 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
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Python文本相似性计算之编辑距离详解
2016/11/28 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
十八大闭幕感言
2014/01/22 职场文书
学生打架检讨书
2014/02/14 职场文书
保密普查工作实施方案
2014/02/25 职场文书
荒岛余生观后感
2015/06/09 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
一文搞懂Python Sklearn库使用
2021/08/23 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers