扫描仪.Scan()挂在GoLand调试器中



在OSX Mojava上与GoLand 2018.3一起使用Go v1.11.1。当我在正常模式下(而不是通过调试器(运行以下程序时,它运行得很好。当我使用调试器运行它时,它会挂在扫描仪中。Scan((调用。

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("> ")
}
}

使用调试器、扫描仪逐步完成。扫描((似乎一直在读取输入。我找到了名为"zsyscall_darwin_amd64.go"的文件中的这一行:

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

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

感谢您的评论。在报告了这个问题后,我意识到这是GoLand的一个已知问题,已经一年多了:

https://youtrack.jetbrains.com/issue/GO-4264

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

希望它能尽快修复。没有调试器很难调试:(。

最新更新