Налагодженню та тестуванню системи OpenSCADA приділяється значний час розробників, однак у зв'язку із обмеженістю ресурсів та і практичною неможливістю охопити всі варіанти конфігурації та виконання системи OpenSCADA помилки можуть проявлятися як у вигляді невиконання окремих функцій, некоректності їх виконання та навіть аварійного завершення програми у користувачів. Розуміння цього з боку користувача дуже важливе, та з його боку потребується добра воля для приділення деякого часу на приготування звіту про проблему з метою її наступного усунення розробниками.
Перед приготуванням повідомлення про проблему рекомендується ознайомитися з переліком помилок та зауважень у відповідному розділі Помилки та зауваження до системи OpenSCADA.
Для виключення зайвих навідних питань та для прискорення процесу локалізації проблеми рекомендується слідувати наступним вимогам до повідомлення.
Повідомити про помилку у системі OpenSCADA можна декількома способами:
Переклад триває
В ОС Linux, при сбое программ, ядро ОС может формировать предсмертный дамп памяти программы. С помощью этого дампа часто можно выявить место в программе, вызвавшее аварийную остановку. Для включения возможности генерации предсмертного дампа памяти программы ядром необходимо выполнить команды:
# Проверка возможности генерации дампов памяти
# Указывает "core", если включена
$ cat /proc/sys/kernel/core_pattern
# Включение генерации дампов памяти
$ echo "core" > /proc/sys/kernel/core_pattern
После этого необходимо снять ограничение на размер генерируемого файла дампа, для чего OpenSCADA можно запустить с аргументом --CoreDumpAllow или выполнить специальную команду перед вызовом OpenSCADA "$ ulimit -c unlimited".
Затем достаточно убедиться в том, что пользователь, запускающий OpenSCADA, имеет право записи в рабочую директорию OpenSCADA, параметр "Workdir" в конфигурационном файле программы.
Далее запускается система OpenSCADA и воспроизводится аварийное завершение, в результате которого в рабочей директории OpenSCADA создаётся файл core.
Типовые скрипты запуска OpenSCADA, которые поставляются в пакетах дистрибутивов OpenSCADA с версии 0.8.0, включают генерацию дампа памяти и автоматически формируют из него отчёт обратных вызовов (backtrace) в виде файлов "crash_2012-01-05_11:05.txt" в рабочей директории.
Если сформировался файл дампа памяти core, а отчёт обратных вызовов автоматически не сформировался, то вероятно не установлен отладчик "gdb". В таком случае Вы должны его установить и вызвать вручную команду, из текущей директории для глобальной конфигурации:
Или-же выполнить процедуру в интерактивном режиме, для глобальной конфигурации:
# Переход к рабочей директории OpenSCADA
(gdb) cd /var/spool/openscada
# Указание исполняемого файла, не скрипты!
(gdb) file /usr/bin/openscada
# Указание файла дампа памяти программы
(gdb) core-file /var/spool/openscada/core.26658
# Получение разворота стека исполнения
(gdb) bt
#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