【问题标题】:VSCode Xdebug and DBGp proxyVSCode Xdebug 和 DBGp 代理
【发布时间】:2016-11-29 19:01:00
【问题描述】:

我正在尝试在 Visual Studio Code 中调试托管在 SFTP 上的 PHP 应用程序。 实际上我正在使用具有此配置的“Php Debug”插件:

    {
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9001,
        "serverSourceRoot": "/var/www/httpdocs/project",
        "localSourceRoot": "${workspaceRoot}"
    },

显然它不起作用,因为我没有设置 DBGp 代理或类似的东西。

因为这是为了工作,我的公司建议我使用 PhpStorm 并将我链接到此:

https://confluence.jetbrains.com/display/PhpStorm/Multi-user+debugging+in+PhpStorm+with+Xdebug+and+DBGp+proxy

VSCode 怎么做?

【问题讨论】:

  • 问题是:这里真的需要DBGp代理吗?也许简单的 SSH 隧道也可以完成这项工作?
  • 我在一家公司工作,我无法修改服务器上的 php.ini。它配置了 remote_host=$proxy_ip 所以我认为不能将它用作非代理。
  • 很公平。当然,只要您知道它是一个 DBGp 代理。至于实际问题——我不是 VSC 用户,所以在这里无法提供帮助。但是.. 如果无法找到 VSC 解决方案,您可以使用 PhpStorm :) 进行调试——即使它将用于此(短)调试会话。

标签: php visual-studio-code xdebug


【解决方案1】:

检查这个答案!

  1. DBGp 代理客户端 从http://code.activestate.com/komodo/remotedebugging/下载 ,我使用 Komodo-PythonRemoteDebugging-11.0.2-90813-linux-x86_64.tar

    我的狂欢

#!/bin/bash

export PYTHONPATH=./pythonlib
python -c "import dbgp.client; print 'import lib ok'"

./pydbgpproxy -d 0.0.0.0:9999 -i 0.0.0.0:9001

然后运行

import lib ok
INFO: dbgp.proxy: starting proxy listeners.  appid: 20018
INFO: dbgp.proxy:     dbgp listener on 0.0.0.0:9999
INFO: dbgp.proxy:     IDE listener on  0.0.0.0:9001

php xdebug.ini

xdebug.remote_handler = dbgp
xdebug.remote_host = 10.0.1.88 # DBGp ip 
xdebug.remote_port = 9999 # DBGp port
  1. 带有端口的ssh隧道

    .ssh/配置

# ...
RemoteForward 20000 localhost:20000 # vscode php-debug config
LocalForward 9001 localhost:9001 # DBGp port
# ...

并通过 ssh 连接

  1. vscode 启动.json
"configurations": [
        {
            "name"        : "vscphpdebug",
            "type"        : "php",
            "request"     : "launch",
            "port"        : 20000,
            "stopOnEntry" : false,
            "pathMappings": {
                "/server/php": "${workspaceFolder}"
            },
        }
    ]

在 vscode 中开始调试

  1. telnet DBGp 端口并注册密钥使用:proxyinit -p 20000 -k vscdebug -m 1
$telnet 127.0.0.1 9001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
proxyinit -p 20000 -k vscdebug -m 1
<?xml version="1.0" encoding="UTF-8"?>
<proxyinit success="1" idekey="vscdebug" address="0.0.0.0" port="9999"/>Connection closed by foreign host.

并停止 DBGp 使用这个:proxystop -k vscdebug

$ telnet 127.0.0.1 9001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
proxystop -k vscdebug
<?xml version="1.0" encoding="UTF-8"?>
<proxystop success="1" idekey="vscdebug"/>Connection closed by foreign host.
  1. 在 VSCode 上开始调试(PHP 调试 felixfbecker.php-debug)

调试愉快!

【讨论】:

  • 不知道为什么这个答案在 2020 年 2 月 23 日实际上是正确答案时会被否决。如 Github 问题:github.com/felixfbecker/vscode-php-debug/issues/107 所示,3 年多后,Felix Becker 的 PHP 调试扩展中仍未实现此功能。如果您必须通过 vscode 下的 dbgp 代理进行多用户调试,那么设置 ssh 隧道是唯一的方法。我会将 telnet 命令更改为: echo "proxyinit -p 20000 -k vscdebug -m 1" |数控 dbgphost 9001
猜你喜欢
  • 2022-01-13
  • 2021-11-28
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2019-03-15
  • 2022-01-26
相关资源
最近更新 更多