问题标签 [xdebug-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
381 浏览

phpstorm - Xdebug 配置在 php.ini 之外设置在哪里?(视窗 10)

在 Windows 10 上使用 PhpStorm 版本 2020.3.3 运行 PHP 8。当我使用 Xdebug3 作为调试器时,我能够成功使用断点,但每次都会收到一条烦人的消息:

转到文档为我提供了在 Xdebug 中使用 Xdebug 3 更改的配置的有用注释,但是,我无法在我的 PHP 8 php.ini 中找到这些设置。在 PHP 8 php.ini 中,Xdebug 部分的配置似乎与文档中推荐的配置相匹配:

当我phpinfo()在文件上运行时,XDEBUG 部分的输出如下所示:

是否还有其他地方设置了这些配置,我可以在其中更改它们以摆脱烦人的错误消息?

0 投票
1 回答
53 浏览

xdebug - Xdebug 在没有错误的情况下启动与客户端的连接

我遇到了一个问题,我不确定这是一个问题还是有意为之。

脚本中没有(未捕获的)错误或异常,但在请求处理期间会多次启动连接。这会导致极慢的响应,尤其是当客户端未在侦听时,这会在控制台中多次出现 (4-6)。

所有异常都得到了正确处理,响应还可以,只是非常慢。

如果我转向start_upon_errornoto modedevelop这个问题就会消失。

该文档没有说明有关此主题的任何内容,而两者xdebug.show_error_trace都有xdebug.show_exception_trace信息,如下所示:

当此设置设置为 1 时,Xdebug 将在引发错误时显示堆栈跟踪 - 即使实际捕获了此错误。

所以我的问题是,这种行为是有意的吗?如果是这样,它也应该出现在文档中。

使用 Xdebug 版本 3.0.0 和 3.0.4(PHP 8、ZTS、x64)进行了尝试。感谢您提前做出反应。

0 投票
1 回答
128 浏览

docker - 连接到远程 Docker Image 上的 XDEBUG

我正在尝试使用 NetBeans 11 作为我的客户端、Docker 映像上的 Xdebug 3 进行调试。Docker 容器位于远程主机上。我无法建立联系。NetBeans 屏幕底部的指示器永远滚动,并显示“等待连接 (netbeans-xdebug)”。我不确定我做错了什么。我过去在没有 Docker 和 Xdebug 2 的情况下做过这项工作,我不确定我是搞砸了 Xdebug 3、Docker 还是两者兼而有之。

我的配置:

Dockerfile 正确添加了 Xdebug,我可以在我的容器中看到它。

码头工人-compose.yml

通过 PuTTY 的 SSH 隧道:R9092 localhost:9092

NetBeans PHP 调试配置:

NetBeans 项目配置(运行配置):

0 投票
1 回答
46 浏览

docker - XDebug 只为 CLI 脚本而不是浏览器请求写入日志

我试图诊断为什么 PhpStorm 似乎在一段时间后失去了与在 Windows 上的 Docker 容器中运行的 XDebug 3 的连接,所以我有xdebug.log=/path/to/xdebug.log一个.ini文件,我正在查看那个日志文件。

XDebug 成功地对浏览器请求和 CLI 脚本进行了单步调试,但它只在 CLI 脚本正在执行时写入日志。如果正在处理浏览器请求,则日志在整个步骤调试过程中保持不变。

为什么 CLI 与浏览器对 XDebug 的日志记录有所不同?如何为浏览器请求启用它?

0 投票
0 回答
151 浏览

docker - XDebug 断管警告 - PhpStorm 或 Docker 关闭连接?

环境

我在用着

  • 视窗 10
  • 适用于 Windows 的 Docker 桌面 3
    • 使用带有环境变量的容器PHP_IDE_CONFIG=serverName=Docker
  • XDebug 3
  • PhpStorm 2021.1.2
    • 在 Settings > PHP > Servers 中有一个名为“Docker”的条目

使用这些 XDebug 设置:

还有一些后台进程自动发生,可能会被 XDebug 处理,从而创建到 PhpStorm 的连接数超过其“最大同时连接数”值,但即使将其设置为最高值(20 ) 而不会出现在调试面板中创建多个选项卡。

问题

XDebug 适用于浏览器请求和 CLI 脚本,我可以成功启动单步调试,但几分钟后,当XDebug尝试发送“停止" 响应,随后的请求/脚本无限期挂起。XDebug 日志显示:

故障排除

当执行挂起时,PhpStorm 的调试面板没有显示任何活动

  • 在 IDE 中关闭“Listening for PHP Debug Connections”会导致脚本立即恢复执行,但将其重新打开会导致下一个请求也无限期挂起
  • 重新启动 PhpStorm 不仅可以恢复请求/脚本的执行,还可以恢复单步调试。但几分钟后,单步调试再次不可用,请求无限期挂起。

调查

  • 此评论表明这是因为 IDE 在 XDebug 可以发送“停止”响应之前关闭连接。
  • Windows Docker Desktop中似乎存在一个当前未解决的错误,它使 Docker 在一段时间不活动后丢弃空闲的 TCP 连接,导致 XDebug 会话结束,即使脚本继续运行也是如此。

问题

  • PhpStorm是否负责关闭连接,是否可以配置为不负责?
  • Docker是否负责关闭连接,是否有解决方法?
  • 会不会完全是别的东西?
0 投票
0 回答
359 浏览

phpstorm - Debugging WordPress with Xdebug - PHP Fatal Error: Uncaught Error: Call to undefined function get_header()

I'm trying to debug a WordPress-installation using Xdebug and PhpStorm.

If I write this in the top of functions.php:

And set a breakpoint on line 2, and run 'Debug functions.php', then I hit that breakpoint and I'm able to debug that breakpoint in PhpStorm. So far so good!

But if I move it down, to the bottom of functions.php, and do the same thing, then I get the error:

PHP Fatal error: Uncaught Error: Call to undefined function add_action() in /path/to/project/wp-content/themes/my-theme-name/functions.php:44
#0 {main}
Stack trace:
thrown in /path/to/project/wp-content/themes/my-theme-name/functions.php on line 44

Line 44 looks like this:


I've also tried debugging other files.

Like page.php. Same thing - if I add my demo-code (and breakpoint) in the top, then it works. But if I move it to the bottom, then it stumbles over get_header(). The error:

PHP Fatal error: Uncaught Error: Call to undefined function get_header() in /path/to/project/wp-content/themes/my-theme-name/page.php:6
Stack trace:
#0 {main}
thrown in /Users/zethodderskov/Code/Greenmind/V2-1__local/app/public/wp-content/themes/my-theme-name/page.php on line 6

And line 6 looks like this:


And if I set a breakpoint in an imported class, then it doesn't stop at that breakpoint (even though I'm 100% sure that it reaches that part of the code).

This may be because it's reached during a POST-request. Hmm... I hate being a noob.


Useful intel

  • I've tried a bunch of times setting Xdebug up, but I've never been successful. This is the closest I've gotten. So it might be some stupid blunder.
  • I'm using PHP v. 8.0.6, Xdebug version 3.0.4 and PhpStorm version 2020.3.1 - Build #PS-203.6682.180.
  • The remote server is a Cloudways-server.
  • I've defined WordPress (and WooCommerce) as external libraries (Languages & Frameworks >> PHP). So PhpStorm should know the WordPress-functions. And I can CMD+click on the WordPress-functions and see the function definitions.
  • If I go to 'Run' >> 'Web Server Debug Validation' and click 'Validate', then it shows all green ticks.
  • The guide I've followed the most is this Zero-configuration Xdebug debugging.
  • Here is the contents of my local php.ini-file:
  • In Cloudways, I've added these lines to the php.ini on the remote server (under 'Application Settings' >> 'PHP FPM Settings'):

Answer to comments 1

As @LazyOne pointed out, then I might be debugging a single file, whereas I'm trying to debug the entire project running.

I'm just unsure how to do that. If I go to 'Run' >> 'Edit configurations' (under debug), then I reach this dialog box:

PhpStorm Xdebug edit configuration

And I'm not really sure what I'm supposed to do here, since it 'forces me' to define which file I'm trying to debug.

0 投票
2 回答
614 浏览

docker - 在 WordPress 开发环境中设置 XDebug 3 (Docker + WSL 2)

我无法在 Docker + WSL 2 内的 WP Dev Env 上使用 XDebug 3 进行步骤调试

这是我的文件夹结构

在此处输入图像描述

忽略references.txt文件,这里没有用。

wordpress文件夹将包含所有 wordpress 文件。它在开始时是一个空文件夹,但在通过 docker-compose up 设置开发环境时将填充 WordPress 文件。

注意:所有这些文件都在通过 WSL 2 安装的 ubuntu 20.04 中。


docker-compose.yml文件

注意:是的,我故意在wp服务中映射~/local_wp/wordpress而不是./wordpress ,因为我注意到如果我使用后者,它有点慢?我不知道为什么?它就像安装 wp 插件一样慢,如果我使用后者需要一分钟,但对于前者,它只需要 9-10 秒。


构建/Dockerfile


php.ini文件实际上只有我在这里复制的默认内容https://github.com/php/php-src/blob/master/php.ini-development 这里没什么特别的。


xdebug.ini


同样,我似乎无法使步骤调试工作。我对 VS Code btw使用了php 调试扩展,并按照它的说明进行操作,但还是不行。

我也在WordPress的debug.log上得到了这个

我尝试在 docker-compose.yml 文件上公开端口 9000,但它不起作用。

我尝试从 xdebug.ini 中删除 xdebug.client_host = host.docker.internal,但它不起作用。

我尝试在 docker-compose.yml 文件上公开端口 9000、9001、9002、9003,因为我注意到有时它使用端口 9000,有时使用 9003,仍然无法正常工作。

任何帮助深表感谢。

提前致谢。

0 投票
1 回答
89 浏览

php - xdebug.ini 中的 XDEBUG_PATH_EXCLUDE

我有一个安装了 xdebug 3 的 CentOS 设置。

由于我们在 php.ini 中添加了一个 umask.php 文件的 PHP 进程的 umask 存在问题,因此auto_prepend_file在触发 XDEBUG 时,该文件当然首先被命中,但在本地没有映射。

我已经研究了这个选项:XDEBUG_PATH_EXCLUDE我可以在其中添加 umask 文件的路径,但是这里我们有一个鸡蛋问题,因为在它已经加载之前我无法排除它。

是否存在将其排除在 xdebug.ini 文件中的选项?我没有发现任何迹象表明这个选项存在,但这并不意味着它就是这种情况。

0 投票
1 回答
73 浏览

php - 我应该如何设置 PhpStorm 以便使用 Docker 调试微服务?

假设我有两个微服务在两个不同的 Docker 容器中运行:ServiceAServiceB. ServiceA发出一个 HTTP 请求ServiceB,这个请求返回一个响应。如果可能的话,我希望能够在(PhpStorm 的实例)中启动我的调试会话,并在发送呼叫后将其ServiceA切换到ServiceB(PhpStorm 的实例),然后返回到ServiceA. 需要明确的是,我将打开两个 PhpStorm 窗口:一个ServiceA用于ServiceB.

以下是我当前配置的一些注意事项:

  • 服务A:PHP 7.4.x,Xdebug 3.0.4
  • 服务 B:PHP 7.2.x,Xdebug 3.0.4

ServiceA和的 Xdebug 设置相同ServiceB

根据File | Settings | PHP | DebugPhpStorm 中的配置,它们如下所示,对于 and 是相同ServiceAServiceB

在此处输入图像描述

由于ServiceB应该正在侦听传入连接,因此那个绿色的小虫子工具栏看起来像这样:

在此处输入图像描述

我有什么问题?

  • 我能够开始调试会话,ServiceA但它永远不会切换到ServiceB,会话正确完成。
  • 以下“警告”垃圾邮件我的stdout日志ServiceB

Xdebug:[Step Debug] 无法连接到调试客户端。已尝试:172.18.0.9:9003(来自 REMOTE_ADDR HTTP 标头),localhost:9003(通过 xdebug.client_host/xdebug.client_port 回退)

我可能在这里遗漏了什么?

注意:如果需要更多信息,请询问我,我会添加

0 投票
0 回答
32 浏览

cakephp - Netbeans 中 CakePHP 4 上的 Xdebug 说“找不到路由”

我已经设置好了 Xdebug。它到达第一行并根据我的 Netbeans 工具->选项中的“在第一行停止”指令停止。它说它在 URL:

但是当我点击继续时,这是一个错误:

现在最后一部分是参数。CakePHP 的路由器不应该知道吗?