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执行速度全攻略
Oct 09 PHP
PHP数据库开发知多少
Oct 09 PHP
PHP开发文件系统实例讲解
Oct 09 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
php实现简易聊天室应用代码
Sep 23 PHP
php中删除、清空session的方式总结
Oct 09 PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 PHP
php实现留言板功能
Mar 05 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 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编码转换
2012/11/05 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python 中Pickle库的使用详解
2018/02/24 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Python重新加载模块的实现方法
2018/10/16 Python
python操作gitlab API过程解析
2019/12/27 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
Python识别验证码的实现示例
2020/09/30 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
代理协议书范本
2014/04/22 职场文书
手术室护士个人总结
2015/02/13 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
关于Redis的主从复制及哨兵问题
2022/06/16 Redis