Code前端首页关于Code前端联系我们

xdebug、PHPSTORM 配置 PHP 断点 DEBUG 相关配置

terry 2年前 (2023-09-24) 阅读数 67 #后端开发

1.为什么要费心去调试断点

背景:最近我碰巧调试了一个 PHP 服务中的一个 bug。我通常使用二分法+日志的方法来查找错误。图像简单而粗糙。后来发现同事(老高)在用断点调试,就想着尝试一下。顺便说一句,我使用了老高给我的关键字Xdebug和相关配置。

2。 xdebug 配置流程

  • 创建 xdebug.ini 配置文件
[xdebug]
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=develop,debug

xdebug.client_port = 9003
# 将 xdebug.start_with_request 设置为 yes 表示 Xdebug 扩展将自动启动调试会话,而不需要在 URL 参数中指定。这在大多数情况下都是合适的设置,但请确保您的应用程序环境支持这种自动启动调试会话的方式。
xdebug.start_with_request=yes
xdebug.log='/data/logs/php/xdebug.log'
xdebug.connect_timeout_ms=2000
xdebug.client_host=host.docker.internal
  • 创建 dockerfile 文件
FROM php:7.2-fpm

WORKDIR /data/

# 安裝 delve
RUN pecl install xdebug-3.1.4

COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

注: 上面的第一步和第二步是安装和配置 xdebug。

Xdebug:是一个开源的调试器和分析工具,用于调试和分析 PHP 应用程序。主要有5个功能点(增量调试(Debugging)、跟踪(Tracing)、增强错误报告、性能分析、单元测试覆盖率分析)更多功能探索可以查看xdebug官网: https://xdebug.org/

  • docker-compose替换了原来的PHP镜像
  • 这里../../cave/php包含两个文件(第一步是xdebug.ini,第二步是dockerfile)
api:
    container_name: api
#    image: php
    build: ../../cave/php/
  • 启动容器后,运行容器并检查是否配置成功

php -i | grep 图像。 pngxdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置image.png

注:当我在这里搜索在线教程时,我发现仍然有人配置DBGP代理(DBGP Proxy)用于在调试器和活动PHP脚本之间建立调试连接。不过,这里我们直接在xdebug.ini配置文件中配置xdebug.client_host=host.docker.internal,这样就可以直接从宿主机连接到PHPSTORM启动的调试器了。

断点后请求API接口,激活调试xdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置

3。 PHPstorm调试基础教程

xdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置image.png
  • 显示执行点(Alt+F10):如果您的光标在其他行或其他页面,点击此按钮可以转到当前代码所在行已被处决。
  • 切换(F8):切换并逐行向下移动。如果该行有方法,则不输入该方法。
  • 步入 (F7):步入。如果当前行有方法,则可以输入该方法。一般用于输入自定义方法,不会输入官方类库中的方法。
  • Force Step Into(Alt+Shift+F7):Force Step Into,可以输入任意方法,查看底层源码时可以使用该方法打开官方类库。
  • 退出(Shift + F8):退出并退出您输入到方法调用点的方法。此时,该方法已被执行,但命令尚未完成。
  • 运行到光标处(Alt + F9):运行到光标处,可以将光标放在要查看的行上,然后使用此功能,代码将运行到光标所在行,不设置断点。
  • 评估表达式 (Alt + F8):评估表达式。

参考文档:https://www.jetbrains.com/help/phpstorm/debugging-with-phpstorm-ultimate-guide.html

以上基本涵盖了使用PhpStorm的PHP程序的所有配置和调试。基本操作完成。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门