dosasm / masm-tasm

run and debug TASM/MASM code in VSCode via JSDos, DOSBox and msdos-player
https://marketplace.visualstudio.com/items?itemName=xsro.masm-tasm
MIT License
150 stars 23 forks source link

插件无法在VSCode Remote下执行启动dosbox模拟器的命令 #18

Closed maxesisn closed 3 years ago

maxesisn commented 3 years ago

系统环境:

VSCode: 1.53.2 VSCode运行系统: Windows 10 20H2 VSCode Remote连接至的系统: Ubuntu 20.04.2 LTS x86_64 Ubuntu上的dosbox版本: 0.74-3 shell版本: fish 3.1.0

错误现象:

在右键编辑器选择"Open Emulator"、"Run ASM Code"或"Debug ASM Code"时,若Emulator设置为"dosbox",则上述操作均会直接返回如图错误 exitcode 1(图中为运行"Run ASM Code"时的错误信息): Snipaste_2021-03-01_09-38-30 然而如果将错误信息中的命令直接复制到shell中运行,则是可以运行的(图中dosbox为X11转发至本机的窗口) Snipaste_2021-03-01_09-39-17

如果使用jsdos模拟器,则可以正常进行上述操作,msdos-player无法在Linux系统下运行所有没有测试。

xsro commented 3 years ago

你是用的remote-ssh连接的VMware虚拟机吗?我找时间尝试复现一下

插件本来只是为了运行点dos小游戏而写的,没想到还可以用来远程开发🤣

xsro commented 3 years ago

我复现问题了,错误信息为Error opening terminal: unknown.错误原因应该是没有指定终端。网上说只要指定一下环境变量TERM即可

但是我觉得这个bug似乎可能修复的意义不大:

直接在命令行敲击dosbox

嗐,那个x11是怎么配置的鸭🦆

maxesisn commented 3 years ago

您好,目前我是使用X11转发来解决您发现的两点问题的:

嗐,那个x11是怎么配置的鸭🦆

X11的配置比较简单,首先要在直接连接的过程中添加-x参数,或者在ssh_config配置文件内对保存的host添加一行ForwardX11 yes,然后Windows本机启动一个X11服务器(比如VcXsrv或者我在用的X410),之后远程服务器的X Window就能直接在本机上显示了,实现我issue内图2的效果。

至于要在远程机器启动X Window原因,其实是我个人比较扭曲的需求。我目前在使用性能较差的Windows平板进行开发工作,所以希望尽可能将环境搬到远程服务器上。

您提到的手动设置TERM变量确实是一个方案,不过我测试要在启动命令内设置才有效,我目前进行如下设置后

{
    "masmtasm.dosbox.command": "export TERM=\"xterm-256color\" TERM_PROGRAM=\"vscode\" SHELL=\"/usr/bin/fish\" DISPLAY=\"localhost:10.0\"&& dosbox"
}

已经可以正常启动dosbox了,考虑到这种需求的小众性,确实没有修复的必要性,如果您也认为不必修复的话可以close了,感谢您的帮助。