Xdebug触发断点但VSCode无法定位对应文件的问题排查求助
我目前用Docker的LAMP镜像做PHP开发,已经在Apache里配置好Xdebug并确认它正常运行。主机是Ubuntu系统,搭配的VSCode版本是1.95.1。
遇到的核心问题是:当Xdebug命中token.php里的断点时,VSCode没办法打开对应的文件——它提示找不到/app/backend/models/Token.php这个路径,但实际上这个文件在我主机里的真实路径是/home/butti/repo/backend/app/backend/models/Token.php。
VSCode文件未找到错误界面:弹窗提示“无法打开‘Token.php’:找不到文件(/app/backend/models/Token.php)”
断点在token.php中的状态截图:VSCode左侧行号位置显示红色实心断点标记
Xdebug本身看起来运行正常,变量监视功能也能正常工作(我把日志级别设为了10):
Xdebug日志级别10的界面截图:日志中显示完整的调试交互信息,包含变量取值等内容
我怀疑问题出在launch.json的路径配置上,就是这段代码:
"cwd": "${workspaceRoot}", "pathMappings": { "/var/www/html": "${workspaceRoot}" },
我试过把${workspaceRoot}换成固定路径,但要么VSCode完全不会在断点处停下,要么还是会出现文件找不到的问题。后来我又在pathMappings里加了./,改成了这样:
"cwd": "${workspaceRoot}", "pathMappings": { "/var/www/html": "./${workspaceRoot}" },
结果调试时出现了新问题:一开始断点是正常的红色实心标记:
断点初始状态截图:VSCode行号处的红色实心断点
但当断点被命中时,它变成了透明的空心标记,代码也没有停下来:
断点命中后的状态截图:VSCode行号处的空心透明断点
同时Xdebug的日志里出现了这样的提示:
[32] [Step Debug] WARN: Breakpoint file name does not exist: /home/butti/repo/backend/app/backend/models/Token.php (No such file or directory). [32] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="9" id="320002" resolved="unresolved"></response>
可实际上我的主机里这个文件确实存在,权限也完全没问题:
$: ls -la Token* -rw-rw-rw- 1 butti staff 3273 Nov 6 13:37 Token.php $: pwd /home/butti/repo/backend/app/backend/models
有没有大佬能给点进一步的排查方向建议?
我的完整环境配置信息:
- VSCode的
launch.json中Docker调试配置:
{ "name": "Listen on Docker for Xdebug", "type": "php", "request": "launch", "hostname": "192.168.178.111", "port": 9003, "log": true, "cwd": "${workspaceRoot}", "ignore": [ "**/vendor/**/*.php" ], "pathMappings": { "/var/www/html": "${workspaceRoot}" }, "xdebugSettings": { "max_data": 65536, "show_hidden": 1, "max_children": 100, "max_depth": 3 //"resolved_breakpoints": "0" }, },
- 主机系统:Ubuntu 24.04.1 LTS;VSCode 1.95.1,安装了PHP Debug v1.35.0插件
- Docker镜像:基于
mattrayner/lamp:latest升级到PHP 8.3.13,容器内php -v输出:
PHP 8.3.13 (cli) (built: Oct 30 2024 11:27:07) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.13, Copyright (c) Zend Technologies with Zend OPcache v8.3.13, Copyright (c), by Zend Technologies with Xdebug v3.3.2, Copyright (c) 2002-2024, by Derick Rethans
- 容器内Apache版本:
Server version: Apache/2.4.41 (Ubuntu) Server built: 2024-07-17T18:58:09
备注:内容来源于stack exchange,提问作者Bjoerg




