OpenSCADA

Документи/Як/Звітувати про аварійне завершення

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

English • ‎mRussian • ‎Українська

Налагодженню та тестуванню 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/uk - GFDLMarch 2024OpenSCADA 0.9.7