我正在寻找使用Visual Studio Code调试应用程序的帮助,该应用程序保存在Oracle Virtual Box托管的虚拟机中。
VM已配置了节点,快速,节点检查器等的典型设置,并且我能够使用node-inspector调试我的应用程序(即,节点检查器的端口已在vm中转发,并且如果我设置了使用“ node --debug-brk app.js”运行的应用程序,它在端口5858上监听,我可以导航到localhost:8080 / debug?port = 5858以开始调试)。
但是在VSC中,如果我在调试中使用“ attach”选项,则根本无法到达断点。
我在这里是否缺少某些特别的东西,或者我可以查看任何日志文件-我在OSX Yosemite上,并且VM OS在虚拟框中运行,是一个无头的OpenSuse,配备了无业游民?
注意:我已经尝试通过端口5858 telnet到VM,并且从VM内部到本地计算机本身得到了不同的响应,如下所示:
在虚拟机内部:
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
嵌入主机:节点v0.10.32内容长度:0
在VM外部:
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设置脚本中转发。但是,一位同事告诉我,可能有一项关于我们的网络适配器的公司政策被强加给我们-防止/导致我的连接问题。
但是,我尝试了另一种方法。我已经通过ssh为端口5858上的所有流量建立了隧道连接:
ssh -i myprivatekey -L 5858:localhost:5858 tempuserlocalhost -p 2222
现在,当我开始调试应用程序(即节点--debug app.js)并使用attach选项时,调试器将清楚地附加。当它应该执行时,它没有达到app.js中的断点。
实际上,如果我暂停调试器,则会得到一个局部变量列表和一个调用堆栈,但是会显示以下错误:
Error opening 'app.js' (File not found)
注意:app.js和其他代码文件未保存在VM上,而是保存在我的本地计算机上,并相应配置了samba共享。也许这引起了混乱?
我已经验证了通过ssh隧穿端口5858的作用,到目前为止,您可以连接到VM内部运行的节点并使用不涉及源路径的调试器功能(源路径用于断点和步骤事件等)。问题具有源路径的是VSCode需要访问与VM中运行的节点具有相同路径的源文件。即使通过samba共享源,导致文件的绝对路径在VM内部和外部之间也可能不同。VSCode Preview的唯一解决方法是使路径相同,例如通过引入(符号)链接等。我已经在我们这边创建了一个错误,以改进源路径匹配。
Andre Weinand,Visual Studio代码
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句