如何在 VSCode 调试器中模拟交互式控制台?

我正在尝试调试这个 Go 程序,它读取文本并通过 VSCode 调试器将其输出到控制台。


package main


import (

    "bufio"

    "fmt"

    "os"

)


func main() {

    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter text: ")

    text, _ := reader.ReadString('\n')

    fmt.Println(text)

}

它在终端上运行良好,但是当我使用 VSCode 调试它时,即使我专注于调试输出,我也无法输入任何内容。


调试部分有一个控制台,但它是 REPL 评估器,因此它也与终端控制台无关。


如何在 VSCode 中启用控制台以便可以在程序中输入文本?


至尊宝的传说
浏览 138回答 2
2回答

米琪卡哇伊

接下来是Microsoft/vscode-go 问题 219,并且仍然处于开放状态。是的 - VS Code 调试器控制台当前不支持将任何输入通过管道传输到 stdin。仅供参考,您可以告诉代码调试器在启动配置中使用外部控制台:"externalConsole": true它有一个可能的解决方法,使用远程调试+ vscode 任务,但这并不是微不足道的。tasks.json:{    // See https://go.microsoft.com/fwlink/?LinkId=733558    // for the documentation about the tasks.json format    "version": "2.0.0",    "tasks": [        {            "label": "echo",            "type": "shell",            "command": "cd ${fileDirname} && dlv debug --headless --listen=:2345 --log --api-version=2",            "problemMatcher": [],            "group": {                "kind": "build",                "isDefault": true            }        }    ]}launch.json:{    // 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": "Connect to server",            "type": "go",            "request": "launch",            "mode": "remote",            "remotePath": "${fileDirname}",            "port": 2345,            "host": "127.0.0.1",            "program": "${fileDirname}",            "env": {},            "args": []        }    ]}使用快捷键(command/control + shift + B)运行任务,vscode 将启动一个新的 shell 并运行 delve 服务器。按 F5 调试 .go 文件。这对我来说可以。

牛魔王的故事

要使用交互式控制台,您可以包括"console": "externalTerminal"中launch.json,而不是"externalConsole": true因为调试器可能不允许"externalConsole"(就像我的情况一样)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go