OpenSCADA

Документы/Как сделать/Отчёт о аварийном завершении

This page is a translated version of the page Documents/How to/Crash report and the translation is 100% complete.

English • ‎российский • ‎українська

Отладке и тестированию OpenSCADA уделяется значительное время разработчиков, однако в виду ограниченности ресурсов и практической невозможности охватить все варианты конфигурации и исполнения OpenSCADA, ошибки могут проявляться как в виде невыполнения отдельных функций, некорректности их выполнения и даже аварийного завершения программы у пользователей. Понимание этого со стороны пользователя очень важно и от него требуется добрая воля и некоторое время на подготовку отчёта о проблеме, с целью её последующего устранения разработчиками.

Contents

1 Условия и варианты отчётности

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

Основным и единственным официальным местом сообщения про ошибки на общих основаниях свободной технической поддержки является раздел форума "Отслеживание ошибок", где разработчики гарантировано дадут на них ответ. Если Вы не уверены, что эта ошибка непосредственно OpenSCADA, тогда лучше напишите сообщение про неё в другом разделе форума OpenSCADA, где никаких гарантий ответа не предоставляется. Иначе, после трёх подряд некорректных сообщений про ошибку, Вас будет отключено от форума за злостное получение технической поддержки и консультаций, бесплодно расходуя таким образом время разработчиков! Правила уведомления про ошибки детально изложены здесь.

Перед формированием отчёта про ошибку на общих основаниях свободной технической поддержки, нужно на странице меток форума ознакомиться с перечнем известных ошибок:

Сообщения про ошибки в программе, на основании коммерческой технической поддержки или выполнения работ пользователя, можно осуществить в такие способы, согласно приоритету разработчика:

2 Требования к отчёту про ошибку

Для исключения лишних наводящих вопросов, или даже преждевременного закрытия ошибки статусом "Не ошибка", и для ускорения процесса локализации проблемы рекомендуется следовать следующим требованиям к отчёту:

At.png В случае свободной поддержки обязательным является воспроизведение проблемы в стандартных конфигурациях и на демонстрационной БД, особенно если это аварийное завершение программы и невозможно сформировать отчёт про падение или он оказывается непоказательным.

3 Получение файла предсмертного дампа и его обработка

Во время аварийного завершения программы ядро ОС Linux может формировать предсмертный дамп памяти программы. С помощью этого дампа часто можно выявить место в программе, которое вызвало аварийную остановку. Для включения возможности генерации ядром Linux предсмертного дампа памяти программы нужно выполнить команды:

# Проверка возможности генерации дампов памяти
# Указывает "core", если включена
$ cat /proc/sys/kernel/core_pattern
# Включение генерации дампов памяти
$ echo "core" > /proc/sys/kernel/core_pattern

После этого нужно снять ограничение на размер генерируемого файла дампа. Это ограничение, по умолчанию, в OpenSCADA снято и устанавливается оно аргументом командной строки --noCoreDump. Снять это ограничение, на уровне операционной системы, можно исполнив, перед вызовом OpenSCADA, специальную команду — $ ulimit -c unlimited.

Затем нужно убедиться в том, что пользователь, который запускает OpenSCADA, имеет право записи в рабочую директорию OpenSCADA, что в последних версиях OpenSCADA является обязательным и обеспечивается менеджером проектов OpenSCADA.

Далее запускается OpenSCADA и воспроизводится аварийное завершение, в результате которого, в рабочей директории OpenSCADA, создаётся файл "core".

Последние версии OpenSCADA обеспечивают автоматическую генерацию отчёта про аварийное завершения, при наличии файла предсмертного дампу "core" и отладчика gdb, и это осуществляется в начале запуска OpenSCADA. Файлы отчётов про аварийное завершение получают название вида "AGLKS_core_2018-02-16_22.06.crash" и накапливаются в рабочей директории соответствующего проекта OpenSCADA.

Если файл дампа памяти "core" сформировался, а отчёт про аварийное завершение автоматически не генерируется, то вероятно не установлен отладчик gdb. В таком случае Вы должны его установить и вызвать:

$ openscada-proj proc {ProjName}
$ gdb openscada --core core --batch --quiet -ex "thread apply all bt full" -ex "quit" > {ProjName}_core_$(date +%F_%H:%M).crash
# Переход в рабочий каталог проекта OpenSCADA
(gdb) cd /var/spool/openscada/{ProjName}
(gdb) cd ~/.openscada/{ProjName}
# Указание исполняемого файла
(gdb) file /usr/bin/openscada
# Указание файла дампа памяти программы
(gdb) core-file ./core.26658
# Получение разворота стека исполнения — отчёта об аварийном завершении
(gdb) thread apply all bt full
#0  0xb7d104c0 in pthread_cancel () from /lib/librt.so.1
#1  0xb7d1edaa in start_thread () from /lib/libpthread.so.0
#2  0xb7dfcf5e in clone () from /lib/libc.so.6
Documents/How_to/Crash_report/ru - GFDLFebruary 2022OpenSCADA 1+r2802