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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
PHP中数组的三种排序方法分享
May 07 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php单一接口的实现方法
Jun 20 PHP
php验证码生成代码
Nov 11 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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获取当前所在目录位置的方法
2014/11/26 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
webpack3之loader全解析
2017/10/26 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
台湾最大网路书店:博客来
2018/03/18 全球购物
销售主管岗位职责范本
2014/02/14 职场文书
计算机系本科生求职信
2014/05/31 职场文书
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
Python实现简单得递归下降Parser
2022/05/02 Python