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

2023-07-0613:21:29后端程序开发Comments1,385 views字数 1813阅读模式

1. 为什么要折腾 debug 断点

背景:最近正好调试一个PHP 服务的 bug,平时都是用二分法+打日志法来进行 debug。图的就是一个简单粗暴,后面发现有一个同事(老高)都是打断点来调试,我就想着也要试试,顺便白嫖了一波 老高给我的关键词 Xdebug 以及 相关配置。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

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。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

Xdebug:是一个用于调试和分析PHP应用程序的开源调试器和分析工具。主要可以有5 个功能点(逐步调试(debug),跟踪(Tracing),提升错误报告,性能分析,单元测试覆盖率分析)更多功能发掘可以看 xdebug 官网:xdebug.org/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

  • docker-compose 替换原来的 PHP image
  • 这里../../cave/php中包含着两个文件(第一步的 xdebug.ini 和 第二步的 dockerfile )
api:
    container_name: api
#    image: php
    build: ../../cave/php/
  • 启动容器以后,进入容器里面,看下是否配置成功

php -i | grep xdebug文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

xdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置
image.png
  • PHPSTORM 配置 DEBUG 相关配置
  1. 配置 debug 端口(下面第一张图)
  2. 开启 debug 服务监听的端口(下面第二张图)
xdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置
image.png
xdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置
image.png

备注:这里搜网上的教程的时候,发现还有人配置DBGP 代理(DBGP Proxy)用于帮助调试器与正在运行的 PHP 脚本之间建立调试连接。 不过我们这里在xdebug.ini 配置文件中直接配置了 xdebug.client_host=host.docker.internal ,可以直接连接到宿主机的 PHPSTORM 启动的调试器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

打断点后请求 API 接口,触发调试文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

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

3. PHPstorm 断点 debug 的基础教程

xdebug、PHPSTORM 配置PHP 断点 DEBUG 相关配置
image.png
  • Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。
  • Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。
  • Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
  • Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
  • Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
  • Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
  • Evaluate Expression (Alt + F8):计算表达式。

参考文档:jetbrains.com/help/phps文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

以上,基本就是全部的利用 PhpStorm 对 PHP 程序进行 debug 的配置和基本操作了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/50329.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/50329.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定