使用xdebug设置VSCode:路径映射

20

我正在尝试在VSCode中设置调试,遇到了一些挑战。我输入了localSourceRoot的路径,但Intellisense告诉我它已经过时了,应该使用pathMapping。

作为一个新手,我不知道如何正确地设置它。如果有人能向我解释一下pathMapping所请求的变量和/或属性,我将永远感激你。

我的系统信息如下: PHP版本:5.524 xdebug版本:2.2.5 操作系统Windows 8.1 使用的桌面服务器版本:3.8.5

我检查了phpinfo()并显示文件中有Xdebug,所以我知道它已安装。launch.json文件非常基础,包括端口9000等。我只需要完成那个可恶的pathMapping即可。

感谢任何和所有的帮助。

2个回答

31

我猜你正在使用PHP调试扩展?

https://github.com/felixfbecker/vscode-php-debug

README.md中有如下内容:

远程主机调试

要在远程主机上调试运行的应用程序,您需要告诉XDebug连接到与localhost不同的IP。这可以通过将xdebug.remote_host设置为您的IP或将xdebug.remote_connect_back = 1设置为XDebug始终连接回发出Web请求的计算机来完成。后者是唯一支持多个用户调试同一服务器并适用于Web项目的设置。请参阅XDebug文档以了解更多信息。

要使VS Code将服务器上的文件映射到本地机器上的正确文件,请在launch.json中设置pathMappings设置。例如:

// server -> local
"pathMappings": {
  "/var/www/html": "${workspaceRoot}/www",
  "/app": "${workspaceRoot}/app"
}
请注意,设置CLI调试选项之一将无法与远程主机调试配合使用,因为脚本始终在本地启动。如果您想在远程主机上调试CLI脚本,则需要手动从命令行启动它。

谢谢 dethegeek。那非常有帮助。 :) - rocknriter
你好,不用谢!如果我的回答解决了你的问题,你可以将我的回答标记为已批准的解决方案! - dethegeek
1
我只需要点击您回答左上角的勾号吗? - rocknriter
这是我缺少的最后一个设置,使其工作起来(其他设置为xdebug.discover_client_host = 1和防火墙/ufw未授权端口9003)。 - Clockwork
@dethegeek:试图理解最后一段。这适用于PHPUnit测试吗?我正在尝试在VSCode中调试我的PHPUnit测试,当我的应用程序(Laravel)在带有Xdebug和所有这些配置的Docker容器中运行时,但它从未触发任何断点。 - undefined

4

这对我自己以及其他可能会觉得有用的人都是参考。我正在使用带有xdebug和drupalvm的VSCODE,以下是在设置php.ini后适用于我的内容。

php_xdebug_idekey: VSCODE

{
// 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": 9000,
        "pathMappings": {
            "/var/www/drupalvm/drupal": "${workspaceRoot}/drupal",
          },
        "log": true
    },
    {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9000
    }
]

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接