-1

我有一个服务器,运行我编写的一些代码。不幸的是,出了点问题,我无法在我的开发机器上轻松地重现它。

所以我想使用 VS 远程调试器对其进行远程调试。这通常没什么大不了的,但在这种情况下,我无法直接访问服务器,只能通过第二个服务器。所以我尝试将一些端口(14016,因为我不能直接使用 4016)转发到目标机器的端口 4016。

当我尝试附加到目标机器上运行的进程时,VS 告诉我远程调试器似乎没有在目标机器上运行。

我在使用 Wireshark 时看到的是 VS 通过 TCP 发送一些数据,其中包含 net.tcp://192.168.172.34:14016/Microsoft/VisualStudio/msvsmon 形式的 URI。192.168.172.34:14016是做端口转发的中间服务器的IP和端口。这是有道理的,因为 VS 只知道这个服务器。

问题似乎是 MSVSMON 至少检查端口号或 IP 并使用http://schemas.microsoft.com/ws/2006/05/framing/faults/EndpointNotFound回答,如 Wireshark 所示。 ..

所以问题是:有没有办法通过转发的 TCP 连接进行调试?

4

1 回答 1

1

这对你来说可能为时已晚。但它可能会帮助那里的谷歌员工:

这在类似的环境中对我有用。我不知道是否某些功能被破坏了,我只是不知道。我可以使用断点、单步执行和查看变量。对我来说够多的了。

  • 将“127.0.0.1 remote-debug”添加到远程机器上的hosts 文件中。
  • 将“192.168.172.34 remote-debug”添加到开发机器上的 hosts 文件中。
  • 使用“/hostname remote-debug”启动 msvsmon.exe。
  • 将调试器连接到“remote-debug:14016”

(以此为基本思想,您可能需要稍微摆弄一下。也许根本不使用“/hostname”。也许使用网络IP而不是“127.0.0.1”。)

于 2014-07-25T08:37:14.213 回答