【问题标题】:How to handle stdin/stdout with dlv如何使用 dlv 处理标准输入/标准输出
【发布时间】:2022-07-10 10:03:49
【问题描述】:

我正在使用 Delve 进行调试,但遇到了处理标准输入/标准输出的最佳方式的问题。

第一个问题是我无法读取控制台。我有一个从控制台使用 onput 的函数:

func readConsole() string {
    reader := bufio.NewReader(os.Stdin)
    entry, err := reader.ReadString('\n')
    if err != nil {
        tlog.Fatal(fmt.Errorf("readConsole(): Error reading console input. %v", err))
    }
    entry = strings.Replace(entry, "\n", "", -1)
    return entry
}

ReadString() 返回以下“错误文件描述符”错误:

F0208 21:03:56.574021  429026 configurator.go:81] readConsole(): Error reading console input. read /dev/stdin: bad file descriptor

第二个问题是 fmt.Printf() 在我刚刚运行应用程序时有效,但如果我单步执行源代码 fmt.Printf() 不会显示任何内容。

我知道 dlv 正在通过控制台竞争输入和输出,但不确定如何管理竞争需求。

【问题讨论】:

    标签: go delve


    【解决方案1】:

    我和你有同样的问题,也许 delve 没有计划很快支持来自标准输入的用户输入。最好的解决方法在这里:https://github.com/go-delve/delve/issues/1274#issuecomment-406969034

    【讨论】:

      最近更新 更多