资讯专栏INFORMATION COLUMN

推荐代码调试工具 Xdebug

MartinHan / 968人阅读

摘要:写代码总绕不过需要调试,除了外,我们还是需要借助进行调试。这里的使用,是分别整合到和下。安装还是基于神级武器。至于下一步如何更好的使用,就看各自的实际项目和开发需要了。

写代码总绕不过需要调试,除了 UnitTest 外,我们还是需要借助 Xdebug 进行调试。

所以今天来说说如何基于本地 Docker 环境下,使用 Xdebug。

这里的使用,是分别整合到 VS Code 和 PHPStorm 下。

安装 Xdebug

还是基于神级武器 —— Laradock。我们先看看 Laradock 官网是怎么安装 Xdebug。

Install xDebug#

1 - First install xDebug in the Workspace and the PHP-FPM Containers:

a) open the .env file
b) search for the WORKSPACE_INSTALL_XDEBUG argument under the Workspace Container
c) set it to true
d) search for the PHP_FPM_INSTALL_XDEBUG argument under the PHP-FPM Container
e) set it to true

2 - Re-build the containers docker-compose build workspace php-fpm

参考:https://laradock.io/documentation/#install-xdebug

我们修改对应的地方,然后 build,如果出现下面的错误提示:

尝试添加国内源试试:

RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

重新 docker-compose up -d nginx 后,在 Windows / Mac 下用命令 ./php-fpm/xdebug status 查看安装状态:

配置 Xdebug

目前开发使用 IDE,个人觉得普遍用的最多的就是 VS Code 和 PHPStorm。所以下面就利用这两个 IDE,分别说说如何使用 Xdebug 的。

VS Code

在 VS Code 下,如果没安装 Xdebug 插件,直接搜索安装即可:

安装后,增加 Xdebug 环境配置:

这样就会项目的 .vscode 文件夹下多了一个 Xdebug 配置文件 launch.json,我们配置端口号与 php-fpm 下的 Xdebug 一致,我们再配置 pathMappingsdocker 下的项目路径与本地项目路径关联。具体如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "XDebug listening to Laradock",
            "log": true,
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/var/www/myrss": "${workspaceFolder}",
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

好了,我们启动 XDebug,打印出如下内容,即表示等待请求:

我们写个 Demo,并设置断点:

Artisan::command("hello", function () {
    $i = 0;
    $i++;

    return "hello".$i;
});

然后启动 Xdebug,并执行命令:

php artisan hello

我们可以看到很多输入、输出、断点等信息:

其中我们也能看到此时的变量 $i 处于未初始状态:

我们在这断点继续往下执行:

PHPStorm

在 Mac 或者 Windows 10 下 Docker 的默认 ip 为:10.0.75.1,

我们先增加一个 Server,其中:

Name:laradock

Host: 10.0.75.1

mappings,等同于上文 VS Code 配置的 pathMappings

然后,可以新建 PHP Remote Debug,其中:

Server:关联到我们上面建的 laradock

IDE key:和 Laradock‘s php-fpm 中配置的保持一致即可

好了,我们可以使用 demo,创建断点,运行 Debug 等待请求::

一样的,执行命令:php artisan hello

我们继续往下走:

总结

用好 Xdebug,更加直观的了解方法中每个变量的动态变化,能提高我们跟踪和排查代码的问题所在。至于下一步如何更好的使用 Xdebug,就看各自的实际项目和开发需要了。

参考

Setting up xDebug with PHPUnit using Docker for Mac and PHPStorm https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000229624-Setting-up-xDebug-with-PHPUnit-using-Docker-for-Mac-and-PHPStorm

Laradock + XDebug + MS Code? No problem https://medium.com/full-stack-development/laradock-xdebug-ms-code-no-problem-35a4338deb3f

Laradock的xdebug在vscode上使用的配置 https://www.itread01.com/content/1526278934.html

如何設定VSCode XDebug在laradock環境上 https://blog.scottchayaa.com/post/2018/10/16/vscode-phpunit-on-laradock/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29593.html

相关文章

  • 生产力工具 - PHPSTORM(xdebug, database, ftp, git, restf

    摘要:确实是一款非常好用的生产力工具他的代码提示检错重构调试都非常的棒而且自带的文件历史功能好用的我都快哭了帮我挽救了没来得及提交到的代码其实不只可以写写包括也是极好的的功能他全部都有并且还有很多的好用的插件针对的针对的比如比如官方网站环境说明环 showImg(https://segmentfault.com/img/bVCT8T?w=600&h=360); PHPSTORM 确实是一款非...

    Zack 评论0 收藏0
  • docker中php xdebug调试开发

    摘要:这样就配置好了安装插件监听地址开启小电话以后,如果访问会自动进入断点中的模式,这样我们的开发环境的断点调试就已经配置好了。 docker-compose环境来自:https://github.com/zhaojunlik...原文:http://blog.oeynet.com/post/9... 说明 在开发中,断点调试是我们最快能找出Bug代码问题的所在,那么在docker中如何使用...

    import. 评论0 收藏0
  • docker中php xdebug调试开发

    摘要:这样就配置好了安装插件监听地址开启小电话以后,如果访问会自动进入断点中的模式,这样我们的开发环境的断点调试就已经配置好了。 docker-compose环境来自:https://github.com/zhaojunlik...原文:http://blog.oeynet.com/post/9... 说明 在开发中,断点调试是我们最快能找出Bug代码问题的所在,那么在docker中如何使用...

    kyanag 评论0 收藏0
  • PHP Q&A

    摘要:有哪些作用域函数作用域类作用域函数作用域是什么函数体是一个局部作用域函数体中无法直接访问外部全局变量,必须通过才能访问外部全局变量无法访问通知错误正确访问外部全局变量无法访问函数体中可以直接访问常量输出函数体中可以直接访问类静态属性静态方法 PHP 有哪些作用域? 函数作用域 类作用域 PHP 函数作用域是什么? 函数体是一个局部作用域 函数体中无法直接访问外部全局变量,必须通...

    mikasa 评论0 收藏0
  • XDEBUG 从入门到精通

    摘要:默认关闭如果该设置为,那么将禁用关闭操作符,以便不再隐藏通知警告和错误。将写入垃圾收集统计信息输出的目录,确保将运行的用户具有对该目录的写入权限。此设置确定用于将垃圾回收统计信息转储到的文件的名称。 showImg(https://segmentfault.com/img/bVbgEC5?w=480&h=274); 前言 Xdebug是PHP的扩展,用于协助调试和开发。 它包含一个用...

    leejan97 评论0 收藏0

发表评论

0条评论

MartinHan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<