RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1001221
Accepted
Егор Rmd
Егор Rmd
Asked:2020-07-10 05:27:21 +0000 UTC2020-07-10 05:27:21 +0000 UTC 2020-07-10 05:27:21 +0000 UTC

如何在 VS Code 中使用 xdebug 调试远程站点?

  • 772

在 vs 代码中,我将远程 ssh 和远程 ssh:explorer 在 ssh 配置中我尝试转发端口 9000,vs 代码将在该端口上侦听服务器上的 xdebug

Host debug
    HostName y.y.y.y
    User web
    ForwardAgent yes
    DynamicForward 9000
    # RemoteForward 52698 127.0.0.1:52698

然后我连接到服务器,安装 x_debug 插件,在服务器上创建一个文件夹 .vscode,它包含 launh.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": "VS",
            "type": "php",
            "hostname": "localhost",
            "port": 9000,
            "request": "launch",
            "stopOnEntry": true,
            "log":true,
            "pathMappings": {
                "/var/www/html": "/var/web/sites/namesiteY",
                "/app": "../"
            }

        }
    ]
}

在该站点的服务器上安装了 x_debug(根据此说明),将这些设置添加到 php.ini:

;XDEBUG START

zend_extension = /usr/lib/php/20151012/xdebug.so

[XDEBUG]

xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_host = x.x.x.x
xdebug.remote_port = 9000
xdebug.idekey = VS
xdebug.remote_connect_back = 1
xdebug.force_display_errors = On


;XDEBUG END

结果,我尝试按开始调试以获得简单的测试脚本

$home = 1 + 4;

echo $home;


$value = 0;
if ($value == 0 ) {
    echo "TRUE";  // ТУТ BREAKPOINT
} else {
    echo "False"; // И ТУТ
}

什么也没有发生,变量没有被写入,这出现在调试控制台中:

<- launchResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 2,
  command: 'launch',
  success: true } 

我尝试了使用和不使用 chrome 插件,检查了 ide 是否正在侦听端口 9000: http ://skrinshoter.ru/s/090719/1A2n8TG0?a ,一切似乎都很好我在哪里搞砸了?

附言 1

在 xdebug 插件文档中有一个用于 vs 代码的映射示例:

// server -> local
"pathMappings": {
  "/var/www/html": "${workspaceRoot}/www",
  "/app": "${workspaceRoot}/app"
}

关于注册这些方式的内容还不是很清楚?关于 .vscode 文件夹?在我的情况下有必要吗?

ps2

y.y.y.y - ip сервера с удаленным сайтом
x.x.x.x - мой статичный ip ( там где установлена ide)
debian
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    feycot
    2020-07-13T17:37:10Z2020-07-13T17:37:10Z

    关于连接到 Vagrant 的示例。家庭系统 Xubuntu 18.04 guest ubuntu 16.04 Remote SSH 插件已连接

    设置.ssh/config

    Host vagrant
        HostName 192.168.33.10
        User vagrant
        IdentityFile ~/projects/vagrant/.vagrant/machines/default/virtualbox/private_key
        IdentitiesOnly yes
    

    我们正在连接,我们在左下角写了ssh:vagrant

    zend_extension=xdebug.so
    error_reporting = E_ALL
    display_startup_errors = on
    display_errors = on
    xdebug.remote_enable=1
    xdebug.remote_host=127.0.0.1
    xdebug.remote_port=8014
    xdebug.idekey=code
    xdebug.remote_autostart=1
    

    我们将必要的扩展放在远程服务器上。在这种情况下,您需要 php 调试。重新启动,尝试检查断点。

    我们不会触及 launch.json 中的 mappath。为什么?我们得到了以下情况:vscode 将自己连接到远程服务器,现在将位于远程计算机上。xdebug 应该不会向你的 IP 地址发送数据,而是向其本地地址发送数据,并且我们的 vscode 会监听它

    当我们希望远程服务器从我们的计算机通过 Internet 向我们发送数据时,我们编写配置跟踪 这是在 vscode 中

            {
                "name": "Listen for XDebug",
                "type": "php",
                "request": "launch",
                "port": 8014,
                "pathMappings": {
                    "/vagrant": "${workspaceRoot}",
                  }
            }
    
    xdebug.remote_enable=1
    xdebug.remote_host=192.168.33.1
    xdebug.remote_connect_back = 1
    xdebug.remote_port=8014
    xdebug.idekey=code
    xdebug.remote_autostart=1
    

    而这在 xdebug idekey 中并不是强制性的,似乎需要在环境中(代码工作的地方)注册一个密钥,然后可以通过浏览器传输。

    总的来说,最方便的方法是通过 ssh 进行调试。

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5