微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?