在 VSCode 上调试 Laravel 应用程序

2022-08-30 22:20:52

有没有人成功配置VSCode来调试基于Laravel的网站?在遵循了许多文章和教程之后,我已经达到了可以要求VSCode“Listen to XDEBUG”的程度,但是我无法进行正常的VS风格调试,在那里我只需点击F5即可在我最喜欢的浏览器中启动当前网站,当它遇到断点时,它会闯入VSCode, 就像我们在完整的Visual Studio或Eclipse中所做的那样。

我在我的机器上正确设置了以下内容:

  • VSCode 1.25.1
  • XAMPP 1.8
  • XDEBUG(已配置且工作正常)
  • VSCode 的 PHP 调试扩展

我不确定我需要在我的.PHP 调试扩展附带的两个配置如下所示:launch.json

{
    "name": "Listen for XDebug",
    "type": "php",
    "request": "launch",
    "port": 9000
},
{
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9000
}           

虽然第一个配置工作正常(我可以在 VSCode 中以该模式开始调试,然后在浏览器中单独启动我的网站并命中断点),但第二个配置将失败。它告诉我它无法找到类(这是一个Laravel框架类)。使用命名空间限定类名也没有任何好处。Controller

我的猜测是,这与启动配置的设置方式有关。它尝试将活动脚本作为独立单元启动,因此无法找到位于不同文件中的框架类的定义。我们必须以某种方式将网站作为单个应用程序提供启动。

有没有人成功地做到了这一点,并告诉我我在这里错过了什么?


答案 1

终于让它工作了。如果其他人需要它,这里有些东西。

  1. 确保在 Apache 服务器上设置并运行 XDEBUG

  2. 为您喜欢的浏览器安装调试器扩展。扩展程序可用于Chrome,Edge和FireFox(可以从VSCode中搜索和安装)。

  3. 设置以便它并行启动两个配置。这是通过所谓的复合配置完成的。这是我推出PHP + XDEBUG和EDGE浏览器的:launch.json

     {
         "version": "0.2.0",
         "compounds": [
             {
                 "name": "Launch & Debug",
                 "configurations": [ "Launch Program", "Launch localhost" ]
             }
     ],
     "configurations": [
         {
             "type": "php",
             "request": "launch",
             "name": "Launch Program",
             "cwd": "${workspaceRoot}",
             "port": 9000
         },
         {
             "name": "Launch localhost",
                 "type": "edge",
                 "request": "launch",
                 "url": "http://localhost/public",
                 "webRoot": "${workspaceRoot}"
             }
         ]
     }
    
  4. 根据您的本地设置(如站点地址,xdebug端口等)更新上述配置。

  5. 按 F5,调试会话将启动。浏览器将自动启动,您将能够命中断点。


答案 2

推荐