Как отладить bash-скрипт, который компилирует и запускает приложение Go, но выполняется в моей IDE, а не в терминале - PullRequest
0 голосов
/ 20 июня 2019

Для моего приложения Go мне нужно запустить несколько вещей в следующем порядке:

  1. Приложение Compile Go

go install appName

  1. Запустите nrsc на исполняемом файле моего приложения Go

./nrsc <path to executable> <path to static sources>

  1. Запустить исполняемый файл приложения

./appName -config <path to file>

Моя IDE позволяет мне запускать Bash Script. Сценарий, показанный ниже, пользователь - мое имя пользователя, но подвергнут цензуре для 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, чтобы выйти из него. Но он по-прежнему работает на локальном хосте через определенный порт в моем браузере, как и должно быть.

Когда скрипт запускается через мою IDE, он просто завершается с кодом 1. Но, если я помещаю операторы echo для целей отладки до и после каждой строки, они все печатаются успешно (поэтому каждая строка выполняется), и сценарий завершается с кодом 0. Более того, если я поставлю sleep 10 в конце скрипта, он определенно достигнет этого оператора и перейдет в спящий режим, даже если оператор находится после строки, которая должна запускать мое приложение.

Поскольку приложение не выдает никаких результатов, я понятия не имею, почему оно не работает. Как я могу отладить это?

1 Ответ

0 голосов
/ 21 июня 2019

Обычно я помещаю «set -x» в начало скрипта bash, чтобы получить больше информации о том, что все операторы выполнялись там, где мой скрипт не удался. Но это только сообщит вам, где ваш bash-скрипт ничего не дал в приложении go.

#!/bin/bash
set -x
#<your program>

Для правильной отладки скрипта bash доступен инструмент отладчика bash, bashdb . Вы можете использовать это тоже. Здесь вы можете найти отладчик. Ссылка: http://bashdb.sourceforge.net/

Или, если вы столкнулись с проблемами в приложении Go, вам сначала нужно отладить приложение go, используя любой отладчик, доступный для go. Вы можете использовать отладчик вашей IDE или установить Delve и использовать его. Я лично использую Delve для отладки своих программ go.

Надеюсь, что поможет!

...