@kyanny's blog

My thoughts, my life. Views/opinions are my own.

vscode の launch.json で STDIN

Visual Studio Code(vscode)で標準入力(STDIN)を与えつつプログラムをデバッグ実行したい場合。

"<" でファイルの内容をリダイレクトすれば良い。

Redirect input/output to/from the debug target

{
  "name": "launch program that reads a file from stdin",
  "type": "node",
  "request": "launch",
  "program": "program.js",
  "console": "integratedTerminal",
  "args": ["<", "in.txt"]
}

"args" に配列で与えるのがポイント。文字列で "< in.txt" のようにしてしまうと、エスケープされてしまってうまく動かない。

実行時に STDIN から任意のデータを入力するのは流石に無理。Python デバッガーは ${command:pickArgs} が使えるので、実行時に STDIN に渡すファイルを指定することはできる。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Debugger: Current File with STDIN",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": [
                "<",
                "${command:pickArgs}"
            ]
        }
    ]
}