我需要一些关于使用Visual Studio Code调试我的应用程序的帮助,我的应用程序位于由Oracle Virtual Box托管的虚拟机中。
虚拟机已经配置了典型的node、express、node-inspector等设置,我能够使用node-inspector调试我的应用程序(即端口已在虚拟机内转发,如果我使用"node --debug-brk app.js"运行我的应用程序,则它监听端口5858,我可以导航到localhost:8080/debug?port=5858开始调试)。
然而,在VSC中,如果我使用调试中的"附加"选项,我根本无法到达断点。
这里有什么特别的东西我错过了吗?还是有任何日志文件我可以查看 - 我在OSX Yosemite上,VM OS在virtual box中运行的是一个无头OpenSuse,使用vagrant提供服务?
注:我尝试在端口5858上通过telnet连接到虚拟机,我得到的响应与本地机器本身不同,如下所示:
虚拟机内部:
任何帮助都将不胜感激?
是的,我正在VM外运行VSCode - VM是无头的。
端口已经配置为在vagrant provisioning脚本内部转发。但是,同事告诉我可能存在一个公司政策,强制实施于我们的网络适配器,从而导致我的连接问题。
然而,我尝试了不同的方法。我通过ssh隧道为端口5858上的所有流量建立了连接:
现在当我开始调试应用程序(即node--debug app.js)并使用附加选项时,调试器明显地附加。然而,当它应该运行时,它没有命中我的app.js断点。
实际上,如果我暂停调试器,我会得到一个本地变量列表和一个调用堆栈,但是显示以下错误:
注意:app.js和其他代码文件不保存在虚拟机上,它们保存在我的本地机器上,并配置了相应的Samba共享。也许这是造成混淆的原因?
虚拟机已经配置了典型的node、express、node-inspector等设置,我能够使用node-inspector调试我的应用程序(即端口已在虚拟机内转发,如果我使用"node --debug-brk app.js"运行我的应用程序,则它监听端口5858,我可以导航到localhost:8080/debug?port=5858开始调试)。
然而,在VSC中,如果我使用调试中的"附加"选项,我根本无法到达断点。
这里有什么特别的东西我错过了吗?还是有任何日志文件我可以查看 - 我在OSX Yosemite上,VM OS在virtual box中运行的是一个无头OpenSuse,使用vagrant提供服务?
注:我尝试在端口5858上通过telnet连接到虚拟机,我得到的响应与本地机器本身不同,如下所示:
虚拟机内部:
telnet 127.0.0.1 5858
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Type: connect
V8-Version: 3.14.5.9
Protocol-Version: 1
嵌入式主机:node v0.10.32 内容长度:0
在虚拟机之外:
telnet 127.0.0.1 5858
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
任何帮助都将不胜感激?
是的,我正在VM外运行VSCode - VM是无头的。
端口已经配置为在vagrant provisioning脚本内部转发。但是,同事告诉我可能存在一个公司政策,强制实施于我们的网络适配器,从而导致我的连接问题。
然而,我尝试了不同的方法。我通过ssh隧道为端口5858上的所有流量建立了连接:
ssh -i myprivatekey -L 5858:localhost:5858 tempuserlocalhost -p 2222
现在当我开始调试应用程序(即node--debug app.js)并使用附加选项时,调试器明显地附加。然而,当它应该运行时,它没有命中我的app.js断点。
实际上,如果我暂停调试器,我会得到一个本地变量列表和一个调用堆栈,但是显示以下错误:
Error opening 'app.js' (File not found)
注意:app.js和其他代码文件不保存在虚拟机上,它们保存在我的本地机器上,并配置了相应的Samba共享。也许这是造成混淆的原因?
outDir
已被弃用。我刚刚将其删除,现在一切都正常了。谢谢! - Jon