问题标签 [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.
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 部分的输出如下所示:
是否还有其他地方设置了这些配置,我可以在其中更改它们以摆脱烦人的错误消息?
xdebug - Xdebug 在没有错误的情况下启动与客户端的连接
我遇到了一个问题,我不确定这是一个问题还是有意为之。
脚本中没有(未捕获的)错误或异常,但在请求处理期间会多次启动连接。这会导致极慢的响应,尤其是当客户端未在侦听时,这会在控制台中多次出现 (4-6)。
所有异常都得到了正确处理,响应还可以,只是非常慢。
如果我转向start_upon_error
或no
to mode
,develop
这个问题就会消失。
该文档没有说明有关此主题的任何内容,而两者xdebug.show_error_trace
都有xdebug.show_exception_trace
信息,如下所示:
当此设置设置为 1 时,Xdebug 将在引发错误时显示堆栈跟踪 - 即使实际捕获了此错误。
所以我的问题是,这种行为是有意的吗?如果是这样,它也应该出现在文档中。
使用 Xdebug 版本 3.0.0 和 3.0.4(PHP 8、ZTS、x64)进行了尝试。感谢您提前做出反应。
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 项目配置(运行配置):
docker - XDebug 只为 CLI 脚本而不是浏览器请求写入日志
我试图诊断为什么 PhpStorm 似乎在一段时间后失去了与在 Windows 上的 Docker 容器中运行的 XDebug 3 的连接,所以我有xdebug.log=/path/to/xdebug.log
一个.ini
文件,我正在查看那个日志文件。
XDebug 成功地对浏览器请求和 CLI 脚本进行了单步调试,但它只在 CLI 脚本正在执行时写入日志。如果正在处理浏览器请求,则日志在整个步骤调试过程中保持不变。
为什么 CLI 与浏览器对 XDebug 的日志记录有所不同?如何为浏览器请求启用它?
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是否负责关闭连接,是否有解决方法?
- 会不会完全是别的东西?
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:
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.
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,仍然无法正常工作。
任何帮助深表感谢。
提前致谢。
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 文件中的选项?我没有发现任何迹象表明这个选项存在,但这并不意味着它就是这种情况。
php - 我应该如何设置 PhpStorm 以便使用 Docker 调试微服务?
假设我有两个微服务在两个不同的 Docker 容器中运行:ServiceA
和ServiceB
. 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 | Debug
PhpStorm 中的配置,它们如下所示,对于 and 是相同ServiceA
的ServiceB
:
由于ServiceB
应该正在侦听传入连接,因此那个绿色的小虫子工具栏看起来像这样:
我有什么问题?
- 我能够开始调试会话,
ServiceA
但它永远不会切换到ServiceB
,会话正确完成。 - 以下“警告”垃圾邮件我的
stdout
日志ServiceB
:
Xdebug:[Step Debug] 无法连接到调试客户端。已尝试:172.18.0.9:9003(来自 REMOTE_ADDR HTTP 标头),localhost:9003(通过 xdebug.client_host/xdebug.client_port 回退)
我可能在这里遗漏了什么?
注意:如果需要更多信息,请询问我,我会添加
cakephp - Netbeans 中 CakePHP 4 上的 Xdebug 说“找不到路由”
我已经设置好了 Xdebug。它到达第一行并根据我的 Netbeans 工具->选项中的“在第一行停止”指令停止。它说它在 URL:
但是当我点击继续时,这是一个错误:
现在最后一部分是参数。CakePHP 的路由器不应该知道吗?