原文:XDEBUG+PHPSTORM 开发 调试

XDEBUG+PHPSTORM 开发 调试

在我们开发过程中。我们如果经常性的echo、dump效率很低。所以我们就可以使用xdebug进行断点调试。

下面的教程以 Windows 操作系统为例子。其他操作系统类似。

1. 下载xdebug

安装xdebug前,请确定自己的php版本和使用的TS或NTS。如果实在不清楚,可以通过以下方式查看

如上图,第一个红框就是现在使用的php的版本,

第二个框就是你使用php编译的X86还是X64.

第三个是表示加载的php.ini的位置。我们会用到,后面需要改php.ini。就是改这个位置。一定不能改错了。

第四个框,就是Thread Safety 如果是 diabled 就表示我们用的PHP是NTS的。如果是enable 就代表是TS的。待会选择xdebug的时候就会用到上面的信息。

下载地址:https://xdebug.org/download.php

根据我们上图的信息,我们选择的应该是php7.1 x86 nts的 xdebug拓展

32bit 就是32位操作系统。也就是x86. 如果后面没有写TS ,就代表这个拓展是NTS的。不要选错了。

2. 安装Xdebug

将我们上面下载好的拓展移动到 php 的 extension_dir 的目录。如果不知道自己的拓展目录在哪。还是可以通过phpinfo查看

搜索 extension_dir 就是拓展所在的目录。

3. 配置Xdebug

打开 php.ini php.ini 的位置。通过**phpinfo()**中进行查看。 以免改错位置。

在后面加上一下配置

[Xdebug]
;拓展的位置。这里一定要zend_extesion
zend_extension="php_xdebug-2.7.0alpha1-7.1-vc14-nts.dll"
;启用性能检测分析
xdebug.profiler_enable=on
;启用代码自动跟踪
xdebug.auto_trace=on
;允许收集传递给函数的参数变量
xdebug.collect_params=on
;允许收集函数调用的返回值
xdebug.collect_return=on
xdebug.remote_enable=1
xdebug.remote_handle="dbgp"
xdebug.remote_mode="req"
xdebug.remote_host="localhost"
;端口 可以自己更改,不要冲突,待会需要用到
xdebug.remote_port=9002
xdebug.idekey="PHPSTORM"
xdebug.collect_includes = 1
xdebug.remote_autostart = 1
;指定堆栈跟踪文件的存放目录
xdebug.trace_output_dir="D:/debug"
;指定性能分析文件的存放目录
xdebug.profiler_output_dir="D:/debug"
xdebug.profiler_output_name = cachegrind.out.%t.%p

4. 验证Xdebug

验证Xdebug。同样使用我们的 phpinfo 进行验证。记得改完配置,记得重启apache或者nginx 或者其他的web服务器

搜索xdebug。 看到上面的界面就是配置成功了。然后再检查上面的配置是不是和你设置的一致。

PHPSTORM 整合Xdebug 进行断点调试

1. 配置Cli Interpreter

settings -->Languages Frameworks ---> PHP

点击红框内的 ...

  • 先点击下图的 + 添加一个新的cli 。

  • 点击 ... 选择你的php.exe的位置。 这个php 一定是你的web用的。跟我们配置Xdebug的要一样。

    选择了之后,底下就会检测到我们的php的版本,和xdebug版本以及php.ini的配置。如果这里的信息和我们phpinfo 看到的不一样,就要检查下,是不是选择的php的版本不对。

2. 配置debug

settings -->Languages Frameworks ---> PHP --->Debug

更改红框中的端口为我们在php.ini中的配置的端口。我们在php.ini配置了9002.所以这里也要写上9002.不要写错了。否则就会有问题。

  • 然后再点击我们DBGp Proxy

红框中的配置。按照我们在php.ini中的配置进行填写。

xdebug.idekey="PHPSTORM"
xdebug.remote_host="localhost"
xdebug.remote_port=9002

3. 配置Server

然后自己本地需要debug的host 、 端口

4. edit cofigure

点击菜单栏中的run。 然后点击edit Congiurations

在出来后的选项中,点击 + 然后选择 PHP Web Page

选择你刚才 添加的 server 以及起始的web地址。 点击 apply 应用

6.开启监听

点击下图中的这个小电话的图标。 让你变绿色。

没有监听的状态

正在监听的状态

7. 开启调试

在我们需要调试的代码处,我们需要加上一个断点,然后程序运行到这个地方,就会停下来。下面以TP5为例子。

然后我们运行我们的项目。就会发现浏览器卡住了,这个时候,我们打开PHPstorm。就会发现。程序停下来了。

我们可以很清晰的看到上下文的变量的值。以及框架的执行的流程。这对我们分析一个框架,是很有帮助的。

然后我们可以进行单步调试,或者步入、跳出等操作

图中,所有画红圈的就是常用到的工具。其具体功能介绍如下:

  • 重新请求

此工具,点击后,当前调试所有变量全部销毁,重新开启一轮请求。即如同刷新页面。

  • 执行到下一个断点,暂停

此工具点击后,继续 Laravel 生命进程的路程,直到下一个断点,暂停

  • 停止调试

此工具,停止调试,结束 Laravel 周期。

  • 变量栏

变量栏标签,下面的内容是当前调试位置所有能够用到的变量(包含全局和局部),记住能用到就会显示

  • 定位到当前调试的文件以及行

此工具的作用是当调试行文件关闭了,或者代码视图跑到其它位置了,点击它,就能重新定位到调试文件以及调试行

  • 跳过当前调试行代码要执行函数,直接返回结果

此工具的作用是当调试行代码有调用函数,包含文件,new 新对象时,能够不进入相应函数、文件、类中,直接返回其调用的结果,在当前行中,执行下文

  • 进入和强制进入调用的函数内

此工具功能正好和上面的相反,即进入和强制进入当前调试行将要调用的函数、方法、包含的文件、new的新对象类文件中,执行相应代码

  • 跳出正在调用的函数

跳出正在执行的函数、方法、包含的文件、new 新对象的类文件,至调用行,并继续执行调用行下面的代码

XDEBUG+PHPSTORM 开发 调试的更多相关文章

  1. 史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

    在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开发环境,就我个人而言,比较推崇 Zend Studio 和 PhpS ...

  2. [转]史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置

    本文转自:https://www.cnblogs.com/lishiyun19/p/4470086.html 在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体 ...

  3. PhpStorm集成xdebug进行断点调试

    本文介绍如何使用PhpStorm集成xdebug在本地开发环境进行断点调试的技巧. 我配置的环境是:Windows10 + PhpStorm10.0.1 + PHP5.6. 1. 下载xdebug的扩 ...

  4. 使用phpstorm和xdebug实现远程调试

    使用phpstorm和xdebug实现远程调试 2012-05-23 10:06:35 vs的断点调试功能很强大有木有,能查看所有变量有木有.php调试很麻烦有木有,echo,var_dump写得你想 ...

  5. Phpstorm Xdebug Web程序调试

    平时调试php程序的时候,可以通过在代码中添加var_dump等函数来实现简单的断点调试. 下面介绍另一种方法,通过Phpstorm和Xdebug来进行调试. 1.下载Xdebug 这个是官网下载地址 ...

  6. 使用 PHPStorm + Xdebug 实现断点调试(二)

    一.配置 Xdebug 配置 Xdebug 相关参数,在 php.ini 文件中新增如下配置,如果没安装的,请参考<PHP 安装 Xdebug扩展>: [xdebug] xdebug.re ...

  7. MAC - PhpStorm安装调试环境xdebug

    今天下午一直在捣鼓如何用PhpStorm进行调试,查找了许多资料,零零碎碎的,所以自己弄篇文章记录一下步骤. 安装xdebug 使用brew安装xdebug,语法如下 brew install hom ...

  8. PHPstorm破解方法及xdebug的断点调试

    原文地址:http://www.php.cn/php-weizijiaocheng-381903.html 相信用PHPstorm的程序员肯定很多,令人头疼的是下载的PHPstorm是有使用期限的,小 ...

  9. PHP - MAC下PhpStorm安装调试环境xdebug

    今天下午一直在捣鼓如何用PhpStorm进行调试,查找了许多资料,零零碎碎的,所以自己弄篇文章记录一下步骤. 安装xdebug 使用brew安装xdebug,语法如下 brew install hom ...

随机推荐

  1. [D3] Convert Dates to Numeric Values with Time Scales in D3 v4

    Mapping abstract values to visual representations is what data visualization is all about, and that’ ...

  2. [CSS] No selectable effect

    .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Chrome/Safar ...

  3. javascript的全局变量 分类: C1_HTML/JS/JQUERY 2014-08-07 11:03 562人阅读 评论(0) 收藏

    javascipt是一门面向对象的编程语言.由于存在一些全局属性及全局函数,因此可以认为存在一个全局变量,这些全局属性及全局函数均是其属性或函数. 在js核心中,并没有定义一个具体的全局变量,因此,j ...

  4. thinkphp将excel导入到数据库中

    首先下载phpexcel插件 http://pan.baidu.com/s/1hq56dFm 我用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一 ...

  5. .NET-架构优化实战-前端优化

    原文:.NET-架构优化实战-前端优化 前言 上一篇<.NET-架构优化实战-梳理篇>整理了基本的业务知识,同时也罗列了存在的问题,本篇主要是针对任务列表的页面进行性能优化. 该篇主要涉及 ...

  6. Spark源代码阅读笔记之DiskStore

    Spark源代码阅读笔记之DiskStore BlockManager底层通过BlockStore来对数据进行实际的存储.BlockStore是一个抽象类,有三种实现:DiskStore(磁盘级别的持 ...

  7. 使用Kotlin开发Android

    查看我的所有开源项目[开源实验室] 欢迎增加我的QQ群:[201055521],本博客client源代码下载[请点击] 摘要 我首先声明我并没有使用Kotlin非常长时间,我差点儿是在学习的同一时候写 ...

  8. Android 调整透明度的图片查看器

    本文以实例讲解了基于Android的可以调整透明度的图片查看器实现方法,具体如下:  main.xml部分代码如下: <?xml version="1.0" encoding ...

  9. C++常用数据结构的实现

    常用数据结构与算法的实现.整理与总结 我将我所有数据结构的实现放在了github中:Data-Structures-Implemented-By-Me 常用数据结构与算法的实现.整理与总结 KMP字符 ...

  10. asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)

    原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二) 续上一篇文章:asp.net core2.0 部署centos7/linux系统 -- ...