Отладка проприетарного рекурсивного скрипта

Итак, прочитав эти вопросы здесь, и здесь у меня действительно нет других идей о том, как я хочу задайте этот вопрос, не объясняя мою ситуацию.

Примечание. Я новичок в проприетарных платформах в целом, так как имею опыт работы с бесплатным/открытым программным обеспечением.

По сути, у меня есть работающая программа для нашей собственной собственной платформы управления движением, которая использует сценарий с макросами для связи между программой на стороне пользовательского интерфейса и прошивкой на стороне контроллера движения. Документацией и разработкой всего задействованного программного обеспечения занимается дочерняя компания, и документация отсутствует/неполная, у нас есть поддержка от них, но они натянуты, имеют свои собственные продукты, 2700 миль, и не могу быть в доме по вызову для нас, у меня нет исходного кода / мне не разрешено иметь исходный код ни для основного приложения, ни для прошивки, и ДЕЙСТВИТЕЛЬНО убить его, наш последний, остался только настоящий программист. Мы одни с этим скриптом и множеством новых продуктов, которые зависят от того, как этот скрипт хорошо работает в программном обеспечении. Скрипт нуждается в серьезном, регулярном решении для проверки ошибок; для каждой настроенной машины, с которой мы используем эту систему контроллера движения.

Итак, я собираюсь начать отладку этого скрипта. Вот что здесь происходит.

Я попытался написать макет реализации bash, но степени рекурсии, массивы, извлеченные из файлов .ini, определенный системой набор команд и анализ сценария в прошивке; усложнили эту реализацию отладки bash, и я не уверен, что смогу полностью справиться с ней, не взломав важные вещи.

Я рассмотрел другие варианты, такие как ANTLR, который тоже немного выше моего понимания, но может сработать.

Теперь контроллер обменивается данными через некоторую перекрестную настройку Ethernet со статическим IPv4 (Telnet?), но имеет последовательный порт RS-232, который будет выводить отформатированные строки, которые анализируются из команды «sout». Я намеревался изменить скрипт так, чтобы он выводил как можно больше из форматированных строк с предопределенными системными командами и переменными, но я боюсь, что это не даст мне полной картины.

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

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

Спасибо за уделенное время.


person stelicho    schedule 20.07.2016    source источник
comment
@xxfelixxx мы можем нанять еще одного в ближайшее время. Большая проблема в том, что я не знаю, входит ли это в планы компании на данный момент. Я почти уверен, что это на нас, по крайней мере, сейчас. Но разговоров о получении другого не было, и, возможно, мне нужно перезапустить этот конво.   -  person stelicho    schedule 20.07.2016
comment
.Я был в похожей ситуации (но это был не баш). Задокументируйте программу. Я знаю, это звучит неубедительно, но то, что вам придется копать, и связанные с этим идеи помогут вам в будущем. Когда вы доберетесь до кода, который вы не понимаете, попытайтесь изолировать его и разбить на части. Сначала не зацикливайтесь на слишком большом количестве деталей. Напишите обзор, затем медленно углубитесь в каждую часть — разложите код. Это займет много времени - месяцы, но окупится. Но обязательно запишите — не пытайтесь запомнить все, это не сработает.   -  person cdarke    schedule 20.07.2016
comment
@cdarke Думаю, это то, что я сейчас сделаю. Спасибо, это хорошая идея.   -  person stelicho    schedule 21.07.2016