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 相关文章推荐
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
PHP 对象继承原理与简单用法示例
Apr 21 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP处理会话函数大总结
2015/08/05 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
Angular2使用jQuery的方法教程
2017/05/28 jQuery
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Python备份Mysql脚本
2008/08/11 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python解释器spython使用及原理解析
2019/08/24 Python
简单了解Python write writelines区别
2020/02/27 Python
python 制作简单的音乐播放器
2020/11/25 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
自我鉴定思想方面
2013/10/07 职场文书
小车司机岗位职责
2013/11/25 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
聘用意向书范本
2014/04/01 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL