对于我的Go应用,我需要按以下顺序运行几件事:
go install appName
./nrsc <path to executable> <path to static sources>
./appName -config <path to file>
我的IDE允许我运行Bash脚本。脚本如下所示,用户是我的用户名,但已检查stackoverflow:
#!/bin/bash
go install appName
/home/user/go/bin/nrsc /home/user/go/bin/appName /home/user/go/src/appName/static
/home/user/go/bin/appName -config /home/user/go/src/appName/config/local.conf
在我的终端中从任何目录执行该脚本时,该脚本都能运行并正常运行。当直接在终端中单独键入命令时,所有命令也都起作用。 Go应用程序不会在终端中产生任何输出,也不应该产生任何输出,只是坐在终端中的空行上,直到我按CTRL + C退出它为止。但是它仍然应该在我的浏览器中某个端口上的localhost上运行。
当脚本通过我的IDE运行时,它仅以代码1退出。但是,如果我在每行之前和之后放置echo语句以进行调试,则它们都将成功打印(因此每行都将执行),并且脚本退出代码为0。此外,如果我将sleep 10
放在脚本的末尾,则即使该语句位于应该运行我的应用程序的行之后,它也肯定会到达该语句并休眠。
由于该应用程序不产生任何输出,因此我不知道为什么它不起作用。我该如何调试?
答案 0 :(得分:0)
通常,我在bash脚本的开头放置一个“ set -x”,以获取有关在脚本失败的地方执行所有语句的更多信息。但这只会让您知道您的bash脚本在go应用程序没有失败的地方。
#!/bin/bash
set -x
#<your program>
要正确调试bash脚本,可以使用bash调试器工具 bashdb 。您也可以使用它。 在这里可以找到调试器。 链接:http://bashdb.sourceforge.net/
否则,如果您在Go应用程序中遇到问题,则需要首先使用任何可用于go的调试器调试go应用程序。您可以使用IDE的调试器,也可以安装Delve并使用它。我个人使用Delve调试go程序。
希望有帮助!