Xdebug: [Step Debug] 连接调试客户端超时,等待:200 ms。试过:本地主机:9003
Posted
技术标签:
【中文标题】Xdebug: [Step Debug] 连接调试客户端超时,等待:200 ms。试过:本地主机:9003【英文标题】:Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 【发布时间】:2021-08-05 23:06:42 【问题描述】:我的 php.ini 配置:
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.mode = debug
xdebug.remote_autostart = on
xdebug.profiler_enable = on
xdebug.profiler_enable_trigger = on
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="c:/xampp/tmp"
xdebug.show_local_vars=0
xdebug.remote_host = 127.0.0.1
xdebug.remote_enable = 1
xdebug.remote_port = 9003
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
xdebug.remote_log="c:/xampp/tmp/xdebug.log"
我的 launch.json 配置:
// 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": 9003
]
但我仍然在 error.log 中收到此错误:
[php:notice] [pid 9388:tid 1840] [client ::1:63322] Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(, referer: http://localhost/online-store/admin/types/insert-types.php
首先我使用了端口 9000 但它不起作用,然后我尝试将 php.ini 和 launch.json 中的端口更改为与错误日志中的端口相同的 9003 但仍然没有发生任何事情并且 XDebug 无法正常工作并且不在断点处停止。
【问题讨论】:
根据您的错误消息,您有 Xdebug v3 但您的配置使用 v2 参数名称和值。检查以下链接并相应更新:xdebug.org/docs/upgrade_guide ALSO:youtube.com/watch?v=IN6ihpJSFDw 你点击了Start Debugging
吗?我需要查看 vscode/extension 日志以确保扩展实际上正在侦听端口 9003。正如@LazyOne 所指出的,您的 php.ini 文件中的一堆配置指令用于 Xdebug 2。但我没有不认为这是这里的主要问题。
【参考方案1】:
在将我的 Xdebug 库更新到 3+ 版本后,我也遇到了这样的错误。
我发现新设置xdebug.start_with_request = yes
将Xdebug 配置为在每个请求上建立连接,即使对于开发环境也是不必要的。
同时官方doc 提供使用xdebug.start_with_request = trigger
以便仅在明确指出需要时连接Xdebug。在这种情况下,我可以通过 GET 参数传递一个额外的密钥来开始逐步调试过程,例如http://localhost/?XDEBUG_TRIGGER=1
,但这对我来说很不方便,我只想像往常一样在我的 VSCode 中按 F5 开始调试。
所以我的解决方案如下。我离开了start_with_request = yes
,并通过传递xdebug.log_level = 0
关闭了大部分Xdebug 通知。然后我在launch.json
文件中覆盖log_level
以启用所有警告,但仅在调试会话中。
php.ini:
[XDebug]
zend_extension = php_xdebug-3.0.4-7.4-vc15-x86_64.dll
xdebug.mode = debug,develop
xdebug.discover_client_host = yes
xdebug.log_level = 0
xdebug.log = "%sprogdir%/userdata/temp/xdebug/log.txt"
xdebug.start_with_request = yes
xdebug.idekey = VSCODE
launch.json:
"version": "0.2.0",
"configurations": [
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9003,
"env":
"XDEBUG_CONFIG": "log_level=7",
]
【讨论】:
【参考方案2】:我在使用 PHP8 时遇到了同样的问题。就我而言,这只是他们自己的向导建议的 XDebug 版本。 我使用这个版本,它工作得很好。 3.0.0-8.0-vs16
【讨论】:
【参考方案3】:launch.json:
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"hostname": "localhost",
"pathMappings":
"/var/www/html": "$workspaceRoot/www/"
,
,
根据您的要求更改路径映射,最重要的是主机名。在我添加之后,它起作用了
【讨论】:
以上是关于Xdebug: [Step Debug] 连接调试客户端超时,等待:200 ms。试过:本地主机:9003的主要内容,如果未能解决你的问题,请参考以下文章