Goland 在调试时不接受标准输入
Goland doesn't accept stdin while debugging
在 macOS 上使用 Goland 调试时,我的程序等待来自标准输入的输入。
我可以在控制台中输入并按回车键,但输入没有传递到我的程序。
就像在文本编辑器中输入一样。我可以输入,按回车键,删除我刚刚做的一切。我的程序得到了 none 的这个传递给它。
我在控制台使用 dlv 进行调试时也遇到了这种行为,但是,我发现了关于如何在这种情况下解决它的讨论:
https://github.com/go-delve/delve/issues/1274#issuecomment-406969034
我也看到 vscode 的类似修复:
https://github.com/Microsoft/vscode-go/issues/219#issuecomment-192164367
但是我找不到goland的解决方案。
这是一个已知问题,请参阅官方 issue tracker report。
它的解决方法是使用正确的调试标志编译应用程序,-gcflags="all=-N -l" for Go 1.10 or newer and
-gcflags="-N -l" for Go 1.9 or older), launch the application in a OS 终端,然后使用 Attach to process...
功能。您还可以查看链接的问题以查看其他可能的解决方法。
您可以通过在通过 fmt.Scanf()
读取输入之前将 STDIN 环境变量添加到 main
例程来解决
if stdin := os.Getenv("STDIN"); len(stdin) != 0 {
stdinFile, err := os.Open(stdin)
if err != nil {
panic(err)
}
os.Stdin = stdinFile
}
在 macOS 上使用 Goland 调试时,我的程序等待来自标准输入的输入。
我可以在控制台中输入并按回车键,但输入没有传递到我的程序。
就像在文本编辑器中输入一样。我可以输入,按回车键,删除我刚刚做的一切。我的程序得到了 none 的这个传递给它。
我在控制台使用 dlv 进行调试时也遇到了这种行为,但是,我发现了关于如何在这种情况下解决它的讨论:
https://github.com/go-delve/delve/issues/1274#issuecomment-406969034
我也看到 vscode 的类似修复:
https://github.com/Microsoft/vscode-go/issues/219#issuecomment-192164367
但是我找不到goland的解决方案。
这是一个已知问题,请参阅官方 issue tracker report。
它的解决方法是使用正确的调试标志编译应用程序,-gcflags="all=-N -l" for Go 1.10 or newer and
-gcflags="-N -l" for Go 1.9 or older), launch the application in a OS 终端,然后使用 Attach to process...
功能。您还可以查看链接的问题以查看其他可能的解决方法。
您可以通过在通过 fmt.Scanf()
main
例程来解决
if stdin := os.Getenv("STDIN"); len(stdin) != 0 {
stdinFile, err := os.Open(stdin)
if err != nil {
panic(err)
}
os.Stdin = stdinFile
}