XDebug 管道损坏警告 - PhpStorm 或 Docker 关闭连接?

问题描述

环境

我正在使用

  • Windows 10
  • Windows 版 Docker 桌面 3
    • 使用带有环境变量 PHP_IDE_CONfig=serverName=Docker 的容器
  • XDebug 3
  • PHPStorm 2021.1.2
    • 在“设置”>“PHP”>“服务器”中有一个名为“Docker”的条目

使用这些 XDebug 设置:

PHP -i | grep xdebug
xdebug.cli_color => 0
xdebug.client_discovery_header => no value
xdebug.client_host => host.docker.internal
xdebug.client_port => 9003
xdebug.cloud_id => no value
xdebug.collect_assignments => Off
xdebug.collect_return => Off
xdebug.connect_timeout_ms => 200
xdebug.discover_client_host => Off
xdebug.dump.COOKIE => no value
xdebug.dump.ENV => no value
xdebug.dump.FILES => no value
xdebug.dump.GET => no value
xdebug.dump.POST => no value
xdebug.dump.REQUEST => no value
xdebug.dump.SERVER => no value
xdebug.dump.SESSION => no value
xdebug.dump_globals => On
xdebug.dump_once => On
xdebug.dump_undefined => Off
xdebug.file_link_format => no value
xdebug.filename_format => no value
xdebug.force_display_errors => Off
xdebug.force_error_reporting => 0
xdebug.gc_stats_output_name => gcstats.%p
xdebug.halt_level => 0 
xdebug.idekey => no value
xdebug.log => /var/log/foo/xdebug.log
xdebug.log_level => 7
xdebug.max_nesting_level => 256
xdebug.max_stack_frames => -1
xdebug.mode => develop,coverage,debug,gcstats,profile,trace
xdebug.output_dir => /var/log/foo
xdebug.profiler_append => Off
xdebug.profiler_output_name => cachegrind.out.%p
xdebug.scream => Off
xdebug.show_error_trace => Off
xdebug.show_exception_trace => Off
xdebug.show_local_vars => Off
xdebug.start_upon_error => default
xdebug.start_with_request => yes
xdebug.trace_format => 0
xdebug.trace_options => 0
xdebug.trace_output_name => trace.%c
xdebug.trigger_value => no value
xdebug.var_display_max_children => 128
xdebug.var_display_max_data => 512
xdebug.var_display_max_depth => 3

还有一些后台进程会自动发生,它们可能会被 XDebug 以某种方式创建到 PHPStorm 的连接数超过其“最大同时连接数”值,但即使将其设置为最高,问题似乎也会发生值 (20),而不会在调试面板中创建多个选项卡。

问题

XDebug 适用于浏览器请求和 CLI 脚本,我可以成功启动单步调试,但几分钟后,XDebug 和 PHPStorm 之间的连接似乎总是随着“管道损坏”警告消失 strong> 当 XDebug 尝试发送“停止”响应时,随后的请求/脚本无限期挂起。 XDebug 日志显示

[95] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

[95] [Step Debug] WARN: 2021-05-26 20:55:26.677006: There was a problem sending 179 bytes on socket 5: broken pipe.
[95] Log closed at 2021-05-26 20:55:26.677314

问题排查

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

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

调查

问题

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...