您现在的位置是:主页 > news > 揭阳高端网站建设价格/爱站网站长工具

揭阳高端网站建设价格/爱站网站长工具

admin2025/5/2 1:53:07news

简介揭阳高端网站建设价格,爱站网站长工具,wordpress 修改头像,网站建设需要学编程吗1.应用场景 主要用于学习和使用xdebug进行项目的调试,包括本地项目或者远程项目。基于vscode或者phpstorm编辑器或IDE,目的就是为了解决开发中的问题,快速调试找到问题,解决问题。 2.学习/操作 1. 文档 Xdebug - Debugger and Pr…

揭阳高端网站建设价格,爱站网站长工具,wordpress 修改头像,网站建设需要学编程吗1.应用场景 主要用于学习和使用xdebug进行项目的调试,包括本地项目或者远程项目。基于vscode或者phpstorm编辑器或IDE,目的就是为了解决开发中的问题,快速调试找到问题,解决问题。 2.学习/操作 1. 文档 Xdebug - Debugger and Pr…

1.应用场景

主要用于学习和使用xdebug进行项目的调试,包括本地项目或者远程项目。基于vscode或者phpstorm编辑器或IDE,目的就是为了解决开发中的问题,快速调试找到问题,解决问题。

2.学习/操作

1. 文档

Xdebug - Debugger and Profiler Tool for PHP

Xdebug: Documentation » Installation

Xdebug: Documentation

GitHub - xdebug/xdebug: Xdebug — Step Debugger and Debugging Aid for PHP

https://pecl.php.net/package/xdebug

Xdebug: Documentation » All related content -- 各种环境的xdebug教程

2. 整理输出

2.1 环境

系统:win10 专业版 64位 or Mac M1
环境:集成安装包 phpstudy / php 内置http server
PHP版本:5.6 / 7.2 / 8.x

这里使用php 内置http server

2.2 检查/安装xdebug扩展

https://blog.csdn.net/william_n/article/details/124968041

2.3 配置扩展信息

php.ini配置文件中添加xdebug的配置

note

这是xdebug 2.x的配置

; William Ning Added in 20220526
[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=1

这里使用的最新版本

xdebug3.1.4

所以要使用最新的配置,详情参见

Xdebug: Documentation » Upgrading from Xdebug 2 to 3

最基本的使用配置

; William Ning Added in 20220526
[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes

而且安装VSCode的插件PHP Debug时,也有提示

2.4 在编辑器/IDEA中配置xdebug

这里以为vscode为例

1. 编辑settings.json

直接搜索settings.json,添加如下两行即可

TBD

选择第一个,回车,然后将value的null改为 /usr/local/opt/php@7.2/bin/php [这是我本机的php可执行路径]

2. 编辑launch.json

在configure下,添加配置项

{
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003
},

可以点击,右下角的添加配置,然后填充即可

这里做了三个配置,从而针对不同的环境,不同的项目进行不同的选择,进行调试追踪。

name别一样就行了,方便自己区分。

本机的launch.json文件内容,如下,供参考 -- 这个json文件的内容是国外同事之前添加的,现已被移除code base

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003
    },
    {
      "name": "Launch currently open script",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 0,
      "runtimeArgs": [
        "-dxdebug.start_with_request=yes"
      ],
      "env": {
        "XDEBUG_MODE": "debug,develop",
        "XDEBUG_CONFIG": "client_port=${port}"
      }
    },
    {
      "name": "Launch Built-in web server",
      "type": "php",
      "request": "launch",
      "runtimeArgs": [
        "-dxdebug.mode=debug",
        "-dxdebug.start_with_request=yes",
        "-S",
        "localhost:0"
      ],
      "program": "",
      "cwd": "${workspaceRoot}",
      "port": 9003,
      "serverReadyAction": {
        "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
        "uriFormat": "http://localhost:%s",
        "action": "openExternally"
      }
    }
  ]
}

2.5 本地debug测试

单步调试追踪

1. 启动web server

这里使用PHP内置http server

2. 打断点

这里就直接在入口脚本打断点,试试单步调试

3. vscode中启动xdebug调试

这里选择 Listent for Xdebug

可以看到vscode界面已经进入调试等待状态

4. 客户端发起请求

这里使用postman,浏览器也是一样

点击发起请求 localhost:7200, postman会进入阻塞状态,即一直请求状态

然后跳转到vscode的断点,如下

然后点击单步追踪的几个按钮进行调试即可。

可以看到调试过程中的变量[局部变量和超全局变量]

以及调用堆栈,断点信息,调试控制台等,基本想要的信息都能看到。

至于监控,是xdebug的另一功能, 待实践。

Xdebug本地调试,成功结束~

2.6 远程debug测试

TBD

后续补充

...

3.问题/补充

1. 踩坑:Xdebug配置信息错误

可以看到,上面你Xdebug输出的信息,大意就是,php.ini文件配置的xdebug的选项已经改名了,

详情参见:

Xdebug: Documentation » Upgrading from Xdebug 2 to 3

Xdebug: Documentation » Upgrading from Xdebug 2 to 3

根本原因在于:

我们目前使用的是最新大版本xdebug 3.x,主版本发生了改变,通常意味着,不再兼容之前的主版本,

也就是xdebug 2.x

这里改为如下配置

; William Ning Added in 20220526
[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes

重启web服务

Note

可以查看php.ini中xdebug的设置 -- 注意,这并不一定是正在运行的进程中xdebug的配置

➜  ~ /usr/local/opt/php@7.2/bin/php --ri xdebug

注意其中有一行

xdebug.remote_port => (setting renamed in Xdebug 3) => (setting renamed in Xdebug 3)

也是提示我们,被重命名,需要查看xdebug 3的文档去确认

然后,查文档 ,可知:

xdebug.remote_port #

Replaced by xdebug.client_port.

The default value has also changed from 9000 to 9003.

2. 踩坑2: 请求一直报错:

[Thu May 26 15:40:28 2022] Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

背景:各种配置完毕。

报错提示:Xdebug单步调试,不能连接到debugging的客户端,这里也就是vscode.

原因:提示报错已经说明了,这个问题应是client的问题,因为报错中提到Step Debug

最终判断是个人选择的xdebug的选项可能有问题,导致debug一直没响应。

最先选择的是 Launch Built-in web server

因为这里的server就是使用的PHP build-in web server

但是配置似乎有问题,或者说在 step debug方面,不论是Nginx,Apcache 还是 PHP Build-in web server

都是一样的。只要理清楚了Xdebug的工作流程/原理就明白了。

3. Xdebug的工作原理

成为高级 PHP 程序员的第一步——调试(xdebug 原理篇) | Laravel China 社区

4. 问题列表

1. 如果一个进程在调试,那么其他的请求,应该是正常运行的? 
2. 使用php内置的http server,debug调试,有什么不同吗?
3. 远程调试,怎么搞?原理是什么?

1. 见2

2. 如果是单个接口单个请求调试,应没什么大的不同。

但是不得不说,使用PHP内置Http server,在debug时,其他请求,也是阻塞的,因为PHP内置Http server是单进程server。

至于Nginx + PHP-FPM表现如何,判断应该不会阻塞其他请求,待验证。

3. TBD

5. 有时候打断点会表现出没有响应,可能的原因是服务响应确实慢,比如服务端需要调用[同步调用]第三方服务,所以会表现出阻塞[客户端请求,浏览器或者postman一直处于打转,请求的状态]的状态,

此时,需要等待一下,但是还有另外一个问题,就是超时问题,可能需要额外设置超时限制。

-- 20220608 周三

4.参考

参见文档阅读列表

后续补充

...