scanner.Scan()挂起在GoLand调试器中

scanner.Scan()挂起在GoLand调试器中,go,goland,Go,Goland,在OSX Mojava上使用Go v1.11.1和GoLand 2018.3。当我在正常模式下运行以下程序时(不是通过调试器),它工作正常。当我使用调试器运行它时,它挂起在scanner.Scan()调用中 通过调试,scanner.Scan()似乎在读取输入时挂起。我在名为“zsyscall_darwin_amd64.go”的文件中找到了这一行: 无论我在命令提示符中键入什么,它都不会返回。在非调试器配置中,它工作正常,并打印回我键入的任何内容(按enter键后)。谢谢您的评论。报告该问题后,

在OSX Mojava上使用Go v1.11.1和GoLand 2018.3。当我在正常模式下运行以下程序时(不是通过调试器),它工作正常。当我使用调试器运行它时,它挂起在scanner.Scan()调用中

通过调试,scanner.Scan()似乎在读取输入时挂起。我在名为“zsyscall_darwin_amd64.go”的文件中找到了这一行:


无论我在命令提示符中键入什么,它都不会返回。在非调试器配置中,它工作正常,并打印回我键入的任何内容(按enter键后)。

谢谢您的评论。报告该问题后,我意识到这是GoLand的一个已知问题,至今已超过一年:

OSX上的delve调试器后端似乎存在一些问题。注释中的一个潜在解决方法涉及在本机模式下编译您自己的后端,但这可能会导致其他问题


希望能快点修好。没有调试器很难调试:)。

这听起来很像GoLand没有给你任何方法来控制程序的STDIN。这似乎是GoLand中的一个bug,正常运行是完美的。调试不起作用。
package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    fmt.Println("Hello")
    fmt.Print("> ")

    for scanner.Scan() {
        input := scanner.Text()
        fmt.Println(input)
        fmt.Print("> ")
    }

}
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))