Visual Studio Code调试时如何重定向输入

10

我的应用程序正在从标准输入读取:

var input = process.stdin.read();

是否可以配置 Visual Studio Code 以在调试时重定向输入?

因此,它将等同于此命令行:

node app.js < input.txt

这个配置没有起作用,调试也没有启动。

{
  "name": "Launch",
  "type": "node",
  "program": "app.js",
  "stopOnEntry": false,
  "args": [
    "<",
    "input.txt"
  ]
}

5
如果使用内置的VS Code调试控制台,'< '输入重定向仅在命令及其参数由shell解释时才受支持。但是,上面的启动配置使用VS Code的内部调试控制台,该控制台不使用'shell'。您可以向启动配置添加' console '属性,并将其值设置为'integratedTerminal'或'externalTerminal'。这样将使用一个shell,因此输入或输出重定向将起作用。 - Andre Weinand
在重定向标准输入时设置 "console": "integratedTerminal" 会引发错误:Error processing 'configurationDone' request. The handle is invalid. 应将 console 属性设置为类似 internalConsole 的内容。 - Persian Brat
2个回答

4

args 数组通常用于 Node.js 启动和 V8 引擎运行时标志。

  --no-deprecation
  --throw-deprecation
  --trace-deprecation
  --v8-options
  --max-stack-size=val
  --icu-data-dir=dir

  --enable-ssl2
  --enable-ssl3

在命令行中键入node --v8-options可以查看完整的V8运行时标志列表。
我建议您从命令行开始使用调试标志,这样您就可以将其直接指向stdin,然后将调试器附加到运行中的进程中。
> node --debug app.js
Debugger listening on port 5858

您可以在launch.json文件中拥有多个配置。添加或修改一个以成为您的“附加”调试配置。对于附加,必须指定“address”和“port”(请注意,“address”必须设置为“localhost”,因为远程调试尚未支持)。端口应该是调试启动过程返回的那个端口。

Enter image description here

一旦您的应用程序在指定端口上运行,您可以在播放/运行图标旁边的下拉菜单中更改调试目标。

Enter image description here


这看起来有点凌乱,我更喜欢@AndreWeinland在上面评论中提供的解决方案。 - setholopolus

1

这并不适用于node,但对于使用集成控制台使用GDB调试C/C++应用程序的任何人来说,<不会被shell解释。因此,解决方法是让GDB创建shell:

miDebuggerArgs: "'-ex' 'run < /path/to/input.txt'"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接