在 PHPStorm 中配置 Xdebug

   2016-09-08 0
核心提示:在 使用 Chrome 扩展程序 JSON Viewer 进行调试 这片文章中我曾介绍过,使用 echo json_encode() 的方式进行调试,再配合 Chrome 浏览器插件 JSON Viewer (建议使用 JSON Handler 代替)。调试方式的对比 手动调试的方式实际上局限性很大,缺点很明显: 复杂的

使用 Chrome 扩展程序 JSON Viewer 进行调试 这片文章中我曾介绍过,使用 echo json_encode() 的方式进行调试,再配合 Chrome 浏览器插件

JSON Viewer

(建议使用 JSON Handler 代替)。

调试方式的对比

手动调试的方式实际上局限性很大,缺点很明显:

  1. 复杂的程序变量的中间状态无法跟踪,只能得到最终结果
  2. 要 debug 的变量或者对象较多时不方便打印
  3. 调试代码与程序代码混杂在一起,容易出错,而且来回切换成本还挺高,效率上就低多了

上面的缺点中,

1 可以通过 Xdebug 的单步调试解决,通过打断点,一步步追踪,可以深入某个 function 或者一步步执行,来查看变量的整个状态变化。

2 这个缺点可以通过 error_log() 函数写入文件中,再配合 tail -f log_file 来调试,当然在 Xdebug 中也能一步步查看变量状态。

3 也是我决定用 Xdebug 的原因,打断点很方便管理,不用的断点暂时反选,这样可以在需要启用时启用,而且无需写调试代码,这种调试方式是非侵入式的。

开发中的痛点及思考

以上是我在开发过程中遇到的痛点,而解决方法很简单:

  1. 类与类之间低耦合,这样可以将 bug 缩小范围,且代码也更健壮,方便后续修改
  2. SOLID 原则
  3. 引入单元测试覆盖大部分的功能及类的测试

其中 2 是需要在类的设计上下功夫的,需要长时间的代码编写与逐步改善,1 则可以使用设计模式来解决,3 则可以让你将注意力放在各个功能的衔接点上,通过上面的三个方法,基本能解决平常的小 bug 了。

下面来介绍 debug 工具 Xdebug ,并介绍如何在 PHPStorm 中配置使用。

Xdebug 的安装与配置

Xdebug 有很多安装的方式,这个页面 https://xdebug.org/docs/install 给出了常用的安装方式。 另外有个更好的页面,给出了一步步的步骤, https://xdebug.org/wizard.php ,会告诉你如何编译安装指定的版本。

安装步骤如下:

  1. 下载对应的 Xdebug 压缩包;
  2. 编译

    cd /path/to/xdebug
    phpize
    ./configure
    make
  3. 复制 so 文件到扩展目录

  4. 修改 php.ini 加上以下配置

    [Xdebug]
    zend_extension = /path/to/extensions/xdebug.so
    xdebug.remote_enable=1
    xdebug.profiler_enable=1
    xdebug.remote_port=9000
    xdebug.profiler_output_dir= /tmp/xdebug

phpize 命令是用来准备 PHP 扩展库的编译环境的。

使用 php -m 查看扩展是否加载,再重启 php-fpm 。

下面介绍如何在 PHPStorm 中集成 Xdebug 。

PHPStorm 里配置 Xdebug

PHPStorm 文档里介绍了如何配置 Xdebug https://www.jetbrains.com/help/phpstorm/10.0/configuring-xdebug.html

介绍下几个主要的步骤:

  1. 设置 PHP 解释器。位于 Preferences > Languages & Frameworks > PHP 右侧的 Interpreter ,点击 … 按钮,设置本地的 PHP 环境
  2. 配置 Xdebug 的行为。

    1. 配置 Debug Port ,让其与 php.ini 中的 xdebug.remote_port 端口号相同。
    2. 接收 Xdebug 与 PHPStorm 的连接, Can accept external connections
  3. 当程序运行至端点处时,自动停止,开启这个选项 Run | Break at first line in PHP scripts

通过上面的配置,就可以在 PHPStorm 运行 Xdebug 了。不过这还不够,需要配置具体的项目,这样 Xdebug 才知道如何运行,并在指定的断点处停止并通知 PHPStorm 。

配置实例运行具体的 debug 项目

下图中显示了如何配置某个 debug 项目。

在 PHPStorm 中配置 Xdebug

选择 PHP Web Application 即可配置某个 web 项目,设置项目的 url 及当前配置的名称即可。

以上这些步骤走完,一个 web 项目的 Xdebug 配置就做好了,只需设置断点,再点击 Run -> Debug ‘你的 debug 项目名称’ ,即可开始 debug 之旅了。

Enjoy it.

 
标签: Xdebug PhpStorm
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • php开启xdebug扩展 php xdebug断点调试
    php开启xdebug扩展 php xdebug断点调试
    1、下载Xdebug(先看php下的ext文件夹(C:\xampp\php\ext)下有没有php_xdebug.dll文件,如果有的话,就不用下了。)到目前为止,Xdebug的最新版本为2.7.0,可以前往Xdebug官方网站下载与自己的PHP版本匹配的Xdebug模块文件。由于笔者使用的是php5.6.37版本,
    02-09
  • PHP 设置调试工具XDebug PHPStorm IDE
    PHP 设置调试工具XDebug PHPStorm IDE
    先下载PHP扩展Xdebughttps://xdebug.org, 可以复制自己的phpinfo粘贴到https://xdebug.org/wizard.php中, 会生成需要下载的版本, php.ini的设置语句.下载好之后放入php目录的ext文件夹中, 然后设置php.ini, 在最后加上zend_extension = C:\path\php\ext\php_x
  • PHPStorm+Xdebug断点调试PHP
    PHPStorm+Xdebug断点调试PHP
    前言:何为DEBUG?相信很多程序员都知道debug这个单词,也明白它的意思,但是对于这词的由来,恐怕少有人知道。关于debug的由来,要追溯到1937年。1937年,美国青年霍德华.艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(m
  • [原]跨平台PHP调试器设计及使用方法——探索和设计
    [原]跨平台PHP调试器设计及使用方法——探索和
    在 《跨平台PHP调试器设计及使用方法——立项》 一文中,我确定了使用xdebug作为调试器插件部分的基础组件。xdebug提供了一个远程调试的功能(相关资料可以详见https://xdebug.org/docs/remote),我们这个项目便是基于这个功能实现的。 (转载请指明出于brea
    10-17 Xdebug
  • Mac OS X下PhpStorm+MAMP PRO+Xdebug+FireFox集成开发和断点调试环境配置
    Mac OS X下PhpStorm+MAMP PRO+Xdebug+FireFox集
    一、环境及软件1、macbook pro2、Phpstorm3、MAMP PRO4、FireFox二、环境搭建1、PhpStorm导入项目下载PhpStorm并安装,网上随便找个注册码即可破解,安装后打开界面选择ToolBar → VCS → Checkout from Version Control → Git,填写Git Repository URL,选
  • 如何在 PhpStorm 使用 Xdebug On Demand?
    如何在 PhpStorm 使用 Xdebug On Demand?
    Xdebug 是 PhpStorm debug 的必備工具,但是啟動 Xdebug 又會使 Composer 變慢,實務上很兩難,這個問題在 PhpStorm 2016.2 得到完美解決,平時不用開啟 Xdebug,PhpStorm 會在需要 debug 時才自動啟動 Xdebug,不會影響 Composer 執行速度。Motivation Compo
  • phpStorm remote debug with xdebug
    因为使用了 docker 进行了环境隔离,所以需要对 phpStorm 进行远程调试的配置。网上有一些教程,不是太复杂就是已经过时。经过摸索,一下是完整的配置流程。版本: ubuntu 14.04 LTS, phpStorm 9, php5-fpm首先是服务器端的设置:安装xdebugapt-get install p
  • 解决 Composer 运行时的 Xdebug 冲突
    解决 Composer 运行时的 Xdebug 冲突
    composer 对 phper 来说是个福音,但有时,他也会给我们一些小麻烦,比如下面这个报错: You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug 这是一个非常常见的冲突,而且
  • Laravel 配置 PhpStorm + Xdebug + Chrome 设置Debug环境
    Laravel 配置 PhpStorm + Xdebug + Chrome 设置
    简介 配置Laravel在PhpStorm中的断点调试,有两种方式,第一种是最为常用的,直接配置一下phpstorm和安装一个chrom插件即可,但这种方式有一些缺陷,就是对API的调试非常不容易,比如Ajax或者客户端请求:http://laravelista.com/debugging-a-laravel-web-app
  • 基于phpstorm和vagrant环境的xdebug远程调试
    网页调试/本地调试流程是啥开发环境安装xdebug,配置监听client端(安装phpstorm那端)配置phpstorm-debug,重点要用path-map,不然对于单一入口的网页调试找不到哦断点跟踪吧详细网上资料很多,下边三个都可以用,我就不赘述了phpstorm远程调试Zero-configur
点击排行