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 相关文章推荐
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 PHP
php 实现银联商务H5支付的示例代码
Oct 12 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
smarty基础之拼接字符串的详解
2013/06/18 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python不规范的日期字符串处理类
2014/06/10 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
分析Python读取文件时的路径问题
2018/02/11 Python
Python用字典构建多级菜单功能
2019/07/11 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Python定义函数实现累计求和操作
2020/05/03 Python
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
交通事故起诉书
2015/05/19 职场文书
护理心得体会范文
2016/01/22 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
MySQL时区造成时差问题
2022/04/13 MySQL
MySQL数据库表约束讲解
2022/06/21 MySQL