scanner.Scan () зависает в отладчике GoLand - PullRequest
0 голосов
/ 24 ноября 2018

Использование Go v1.11.1 на OSX Mojava с 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).

1 Ответ

0 голосов
/ 26 ноября 2018

Спасибо за комментарии.После сообщения о проблеме мне стало известно, что это известная проблема в GoLand, и она существует уже более года:

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

Похоже, что есть некоторая проблема с бэкендом отладчика delve наOSX.Потенциальный обходной путь в комментариях связан с компиляцией вашего собственного бэкэнда в основном режиме, но это может вызвать другие проблемы.

Надеюсь, что это будет исправлено в ближайшее время.Довольно сложно отлаживать без отладчика :).

...