如何调试采用输入文件重定向和输出文件重定向的 Go 二进制文件?

How do you debug a Go binary that takes input file redirection and output file redirection?

我有一个名为“runme”的 Go 二进制文件,它可以像这样成功运行:

./runme encrypt --password=password < plaintext.txt > encrypted.txt

成功读取名为“plaintext.txt”的文件并输出名为“encrypted.txt”的加密文件。

现在我想使用 dlv debugger for Go 来调试它:

dlv exec  ./runme -- encrypt -password=password < plaintext.txt > encrypted.txt

但是我从 dlv 调试器收到以下错误消息:

Stdin is not a terminal, use '-r' to specify redirects for the target process or --allow-non-terminal-interactive=true if you really want to specify a redirect for Delve

所以我再试一次略有不同:

dlv exec -r ./runme -- encrypt -password=password < plaintext.txt > encrypted.txt

但我收到与上面显示的完全相同的错误消息。然后我尝试以下操作:

dlv exec --allow-non-terminal-interactive=true  ./runme -- encrypt -password=password < plaintext.txt > encrypted.txt

这次我收到不同的错误信息:

Command failed: command not available

我无法在调试器中完成看似简单的事情。我可能做错了什么?

在@tkausl 和@gopher 的帮助下,我弄明白了。

解决方法是:

dlv exec -r stdin:plaintext.txt  -r stdout:encrypted.txt ./runme -- encrypt -password=password