GoLang调试器在stdin上窒息

时间:2018-09-18 11:41:07

标签: goland delve

我在使用GoLand的调试器获取尝试从stdin读取的一段代码时遇到问题。例如,以下代码:

package main

import (
    "io"
    "os"
    "strings"
)

func main() {

    io.Copy(os.Stdout, strings.NewReader("Start typing now...\n"))

    io.Copy(os.Stdout, os.Stdin)
}
当我从GoLand中run进行

完美执行时,控制台窗口会正确收集输入。但是,当我使用debug命令时-我可以看到我的输入出现在控制台窗口中,但是enter键不会结束输入字符串,而是将光标移至下一行。

我的版本:

GoLand 2018.2.2
Build #GO-182.4129.57, built on August 23, 2018
JRE: 1.8.0_152-release-1248-b8 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.13.6

1 个答案:

答案 0 :(得分:2)

在使用OSX时,没有简单的方法可以使它正常工作。

假设您使用的是Go 1.10或更高版本,请将目录更改为$GOPATH/src/github.com/user/package,然后使用go build -gcflags "all=-N -l" github.com/user/package编译应用程序,然后在Terminal中手动启动应用程序。应用程序运行后,转到Run | Attach to Process...,然后从列表中选择应用程序。这会将调试器附加到正在运行的应用程序。

请注意,为了改善调试体验,需要执行编译步骤,但由于(几乎)所有优化都已关闭,因此不应在生产环境中使用生成的二进制文件。