为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
至尊宝的传说 2023-07-17 14:39:07
我正在尝试调试这个 Go 程序,它读取文本并通过 VSCode 调试器将其输出到控制台。package mainimport (    "bufio"    "fmt"    "os")func main() {    reader := bufio.NewReader(os.Stdin)    fmt.Print("Enter text: ")    text, _ := reader.ReadString('\n')    fmt.Println(text)}它在终端上运行良好,但是当我使用 VSCode 调试它时,即使我专注于调试输出,我也无法输入任何内容。调试部分有一个控制台,但它是 REPL 评估器,因此它也与终端控制台无关。如何在 VSCode 中启用控制台以便可以在程序中输入文本?
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

接下来是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 文件。这对我来说可以。


查看完整回答
反对 回复 2023-07-17
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

要使用交互式控制台,您可以包括

"console": "externalTerminal"

launch.json,而不是

"externalConsole": true

因为调试器可能不允许"externalConsole"(就像我的情况一样)


查看完整回答
反对 回复 2023-07-17
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信