GoLang отладчик давится на стандартный ввод - PullRequest
0 голосов
/ 18 сентября 2018

У меня проблема с использованием отладчика 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)
}

отлично работает, когда я run это изнутри GoLand - окно консоли собирает ввод правильно.Но когда я использую команду debug - я вижу, что мой ввод появляется в окне консоли, но клавиша ввода не заканчивает строку ввода, вместо этого курсор просто перемещается на следующую строку.

Myверсии:

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 голосов
/ 18 сентября 2018

Поскольку вы используете OSX, не существует простого способа заставить это работать.

Если вы используете Go 1.10 или новее, измените каталог на $GOPATH/src/github.com/user/package, затем скомпилируйте ваше приложение, используя go build -gcflags "all=-N -l" github.com/user/package,а затем вручную запустить приложение в Терминале.После запуска приложения перейдите на Run | Attach to Process... и выберите приложение из списка.Это прикрепит отладчик к работающему приложению.

Обратите внимание, что для улучшения процесса отладки необходим шаг компиляции, но вы не должны использовать полученный бинарный файл в производстве, поскольку (почти) все оптимизации были включенывыкл.

...