登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-31 08:54:33 283浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Scanner.Scan() 在 GoLand 调试器中挂起》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

在 osx mojava 上使用 go v1.11.1 和 goland 2018.3。当我在正常模式下(不通过调试器)运行以下程序时,它工作正常。当我使用调试器运行它时,它挂在 scanner.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("> ")
    }

}

使用调试器进行单步调试,scanner.scan() 似乎一直在读取输入。我在名为“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 上的 delve 调试器后端似乎存在一些问题。评论中的一个潜在解决方法涉及在本机模式下编译您自己的后端,但这可能会导致其他问题。

希望尽快修复。没有调试器很难调试:)。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>