<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html class="client-nojs" dir="ltr" lang="en">
<head>
<meta charset="UTF-8" />
<title>Документи/Як/Звітувати про аварійне завершення - OpenSCADAWiki</title>
<meta content="MediaWiki 1.26.4" name="generator" />
<link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" />
<link href="../en/files/doc.css" rel="stylesheet" /></head>
<body><div class="floatright"><a href="index.html"><img alt="OpenSCADA" src="../en/files/index.png" /></a></div><div id="mw_header">
			<div class="mw-indicators">
</div>
			<h1 id="firstHeading" lang="uk">Документи/Як/Звітувати про аварійне завершення</h1>
		</div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="uk"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&amp;group=page-Documents%2FHow+to%2FCrash+report&amp;action=page&amp;filter=&amp;language=uk" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Documents/How_to/Crash_report" title="Documents/How to/Crash report">Documents/How to/Crash report</a> and the translation is 100% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../en/How_to_Crash_report.html" title="Documents/How to/Crash report (100% translated)">English</a>&nbsp;• ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../ru/How_to_Crash_report.html" title="Документы/Как/Отчитаться про аварийное завершение (87% translated)">mRussian</a>&nbsp;• ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">Українська</span></div></div>
<div style="float:right; border:1px solid gray; width:300px; padding:2px; margin-left: 10pt; margin-bottom: 10pt;">
<ul><li> <b>Автор:</b> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a> </li></ul>
</div>
<p>Налагодженню та тестуванню OpenSCADA приділяється значний час розробників, однак у зв'язку із обмеженістю ресурсів і практичною неможливістю охопити всі варіанти конфігурації та виконання OpenSCADA, помилки можуть проявлятися як у вигляді невиконання окремих функцій, некоректності їх виконання та навіть аварійного завершення програми у користувачів. Розуміння цього з боку користувача дуже важливе та від нього потребується добра воля і деякий час на приготування звіту про проблему, з метою її наступного усунення розробниками.
</p>
<div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#.D0.A3.D0.BC.D0.BE.D0.B2.D0.B8_.D1.82.D0.B0_.D0.B2.D0.B0.D1.80.D1.96.D0.B0.D0.BD.D1.82.D0.B8_.D0.B7.D0.B2.D1.96.D1.82.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F"><span class="tocnumber">1</span> <span class="toctext">Умови та варіанти звітування</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#.D0.92.D0.B8.D0.BC.D0.BE.D0.B3.D0.B8_.D0.B4.D0.BE_.D0.B7.D0.B2.D1.96.D1.82.D1.83_.D0.BF.D1.80.D0.BE_.D0.BF.D0.BE.D0.BC.D0.B8.D0.BB.D0.BA.D1.83"><span class="tocnumber">2</span> <span class="toctext">Вимоги до звіту про помилку</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#.D0.9E.D1.82.D1.80.D0.B8.D0.BC.D0.B0.D0.BD.D0.BD.D1.8F_.D1.84.D0.B0.D0.B9.D0.BB.D1.83_.D0.BF.D0.B5.D1.80.D0.B5.D0.B4.D1.81.D0.BC.D0.B5.D1.80.D1.82.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B4.D0.B0.D0.BC.D0.BF.D1.83_.D1.82.D0.B0_.D0.B9.D0.BE.D0.B3.D0.BE_.D0.BE.D0.B1.D1.80.D0.BE.D0.B1.D0.BA.D0.B0_.28.D0.97.D0.90.D0.A1.D0.A2.D0.90.D0.A0.D0.86.D0.9B.D0.95.29"><span class="tocnumber">3</span> <span class="toctext">Отримання файлу передсмертного дампу та його обробка (ЗАСТАРІЛЕ)</span></a></li>
</ul>
</div>

<h2><span class="mw-headline" id=".D0.A3.D0.BC.D0.BE.D0.B2.D0.B8_.D1.82.D0.B0_.D0.B2.D0.B0.D1.80.D1.96.D0.B0.D0.BD.D1.82.D0.B8_.D0.B7.D0.B2.D1.96.D1.82.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">1</span> Умови та варіанти звітування</span></h2>
<p>Повідомити про помилку у програмі може кожен, для її розгляду розробниками на загальних підставах вільної технічної підтримки, поза угодою комерційної технічної підтримки або виконання робіт цього користувача. Але будуть розглянуті розробниками тільки помилки, що є помилками безпосередньо OpenSCADA, не є проблемами оточення та сторонніх бібліотек, відтворюються у розробника на демонстраційних конфігураціях останніх версій OpenSCADA та наявному обладнані проекту OpenSCADA!
</p><p>Основним і єдиним офіційним місцем повідомлення про помилки на загальних підставах вільної технічної підтримки є розділ форуму "<a class="external text" href="http://oscada.org/ua/forum/topics/vidstezhennja_pomilok/" rel="nofollow noreferrer noopener" target="_blank">Відстеження помилок</a>", де <a class="external text" href="http://oscada.org/ua/rozrobka/rozrobniki" rel="nofollow noreferrer noopener" target="_blank">розробники</a> <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Works" title="Special:MyLanguage/Works">гарантовано дадуть на нього відповідь</a>. Якщо Ви не певні, що це помилка безпосередньо OpenSCADA, тоді краще напишіть повідомлення про неї у інший розділ форум OpenSCADA, де ніяких гарантій відповіді не надається. Інакше, після трьох поспіль некоректних повідомлень про помилку, Вас буде відключено від форуму за злісне отримання технічної підтримки та консультації, безплідно витрачаючи таким чином час розробників! Правила повідомлення про помилки детально викладено <a class="external text" href="http://oscada.org/ua/forum/posts/vidstezhennja_pomilok/pravila-4/" rel="nofollow noreferrer noopener" target="_blank">тут</a>.
</p><p>Перед формуванням звіту про помилку на загальних підставах вільної технічної підтримки, треба на <a class="external text" href="http://oscada.org/ua/forum/mitki/" rel="nofollow noreferrer noopener" target="_blank">сторінці міток форуму</a> ознайомитися з переліком відомих помилок:
</p>
<ul><li> підтверджених-відкритих та вирішуваних наразі — "BugConfirmed";</li>
<li> що наразі потребують зворотнього зв'язку від автора — "BugNeedFeedBack";</li>
<li> оточення виконання та специфічні до користувача — "BugEnvironment";</li>
<li> некоректних повідомлень про помилку — "BugWrong".</li></ul>
<p>Повідомлення про помилки у програмі на підставі <a class="external text" href="http://oscada.org/ua/poslugi/tekh-pidtrimka/" rel="nofollow noreferrer noopener" target="_blank">комерційної технічної підтримки</a> або виконання робіт користувача, можна здійснити у такі способи, згідно до пріоритету розробника:
</p>
<ul><li> у розділі форуму "<a class="external text" href="http://oscada.org/ua/forum/topics/tekhnichna_pidtrimka/" rel="nofollow noreferrer noopener" target="_blank">Технічна підтримка</a>", який з'являється та доступний для зареєстрованих користувачів, що мають активний <a class="external text" href="http://oscada.org/ua/poslugi/tekh-pidtrimka/" rel="nofollow noreferrer noopener" target="_blank">пакет технічної підтримки</a>;</li>
<li> електронною поштою на адресу <a class="external text" href="mailto:service@oscada.org" rel="nofollow noreferrer noopener" target="_blank">service at oscada.org</a>;</li>
<li> безпосередньо електронною поштою, сервісом миттєвих повідомлень та дзвінків, або телефоном <a class="external text" href="http://oscada.org/ua/rozrobka/rozrobniki" rel="nofollow noreferrer noopener" target="_blank">розробника</a>, а також <a class="external text" href="http://oscada.org/ua/forum/priv-povidomlennja/" rel="nofollow noreferrer noopener" target="_blank">приватним повідомленням форуму</a> (для зареєстрованих користувачів).</li></ul>
<h2><span class="mw-headline" id=".D0.92.D0.B8.D0.BC.D0.BE.D0.B3.D0.B8_.D0.B4.D0.BE_.D0.B7.D0.B2.D1.96.D1.82.D1.83_.D0.BF.D1.80.D0.BE_.D0.BF.D0.BE.D0.BC.D0.B8.D0.BB.D0.BA.D1.83"><span class="mw-headline-number">2</span> Вимоги до звіту про помилку</span></h2>
<p>Для виключення зайвих навідних питань, або навіть передчасного закриття помилки статусом "Не помилка", та для прискорення процесу локалізації проблеми, рекомендується слідувати наступним вимогам до звіту:
</p>
<ul><li> Вказати оточення виконання OpenSCADA, а саме: дистрибутив та версію операційної системи.</li>
<li> Вказати версію OpenSCADA, включаючи SVN-ревізію робочої гілки.</li>
<li> Вказати особливості конфігурації та виконання.</li></ul>
<dl><dd><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> У випадку вільної підтримки обов'язковим є відтворення проблеми у стандартних конфігураціях та на <a href="Quick_start.html" title="Special:MyLanguage/Documents/Quick start">демонстраційній БД</a>, особливо якщо це аварійне завершення програми та неможливо сформувати звіт про падіння або він виявляється непоказовим.</dd></dl>
<ul><li> Описати дії, які викликають помилку.</li>
<li> Вкласти протокол повідомлень OpenSCADA для сеансу з відтворенням помилки.</li>
<li> Вкласти звіт аварійного завершення програми — розворот стеку виконання на момент аварійного завершення.
<ul><li> звіт зазвичай формується автоматично, генерацією із процесу, що падає або передсмертного дампу пам'яті (раніше) — просто встановіть <b>GDB</b>; щодо специфіки тут читайте у наступному розділі;</li>
<li> для значного збільшення користі розвороту стеку маєте додати налагоджувальну інформацію, встановленням опції "-g" під час компіляції, або встановити готовий налагоджувальний пакет <b>openscada-dbg</b>;</li>
<li> при проблемах, пов'язаних із зависанням-блокуванням однієї або декількох задач-потоків OpenSCADA, для їх локалізації може бути корисним ручне переривання програми <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">openscada-proj snapshot {ProjID} </span> або сигналом "SIGSEGV", що викличе формування звіту про падіння з інформацією про місце зависання.</li></ul></li></ul>
<h2><span class="mw-headline" id=".D0.9E.D1.82.D1.80.D0.B8.D0.BC.D0.B0.D0.BD.D0.BD.D1.8F_.D1.84.D0.B0.D0.B9.D0.BB.D1.83_.D0.BF.D0.B5.D1.80.D0.B5.D0.B4.D1.81.D0.BC.D0.B5.D1.80.D1.82.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B4.D0.B0.D0.BC.D0.BF.D1.83_.D1.82.D0.B0_.D0.B9.D0.BE.D0.B3.D0.BE_.D0.BE.D0.B1.D1.80.D0.BE.D0.B1.D0.BA.D0.B0_.28.D0.97.D0.90.D0.A1.D0.A2.D0.90.D0.A0.D0.86.D0.9B.D0.95.29"><span class="mw-headline-number">3</span> Отримання файлу передсмертного дампу та його обробка (ЗАСТАРІЛЕ)</span></h2>
<p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> Секція наразі неактуальна для нових версій OpenSCADA, але можете використати її вміст для старих версій або у специфічному і ручному вивчені аварійних завершень!
</p><p>Під час аварійного завершення програми ядро ОС Linux може формувати передсмертний дамп пам'яті програми. За допомогою цього дампу часто можна виявити місце у програмі, яке викликало аварійну зупинку. Для включення можливості генерації ядром Linux передсмертного дампу пам'яті програми потрібно виконати команди:
</p>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="c"># Перевірка можливості генерації дампів пам'яті</span>
<span class="c"># Повертає "core", якщо включена</span>
cat /proc/sys/kernel/core_pattern
<span class="c"># Включення генерації дампів пам'яті</span>
<span class="nb">echo</span> <span class="s2">"core"</span> &gt; /proc/sys/kernel/core_pattern
</pre></div>
<p>Після цього потрібно зняти обмеження на розмір генерованого файлу дампу. Це обмеження, по замовченню, у OpenSCADA знято та встановлюється воно аргументом командного рядку <b>--noCoreDump</b>. Зняти це обмеження, на рівні операційної системи, можна виконавши, перед викликом OpenSCADA, спеціальну команду <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">ulimit -c unlimited</span>.
</p><p>Потім треба переконатися у тому, що користувач, який запускає OpenSCADA, має право запису до робочої теки OpenSCADA, що у останніх версіях OpenSCADA є обов'язковим та забезпечується <a href="Program_manual.html#Projects" title="Special:MyLanguage/Documents/Program manual">менеджером проектів OpenSCADA</a>.
</p><p>Далі запускається OpenSCADA та відтворюється аварійне завершення, у результаті якого, у робочій теці OpenSCADA, створюється файл "core".
</p><p>Останні версії OpenSCADA забезпечують автоматичну генерацію звіту про аварійне завершення, за наявності файлу передсмертного дампу "core" та налагоджувача <b>gdb</b>, та це здійснюється на початку запуску OpenSCADA. Файли звітів про аварійне завершення отримують назву виду "AGLKS_core_2018-02-16_22.06.crash" та накопичуються у робочій теці відповідного проекту OpenSCADA.
</p><p>Якщо файл дампу пам'яті "core" сформувався, а звіт про аварійне завершення автоматично не генерується, то ймовірно не встановлено налагоджувача <b>gdb</b>. У такому випадку Ви маєте його встановити та викликати:
</p>
<ul><li> сервісну процедуру менеджеру проектів OpenSCADA:</li></ul>
<dl><dd><span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">openscada-proj proc {ProjName}</span></dd></dl>
<ul><li> або команду прямого виклику налагоджувача, із робочої теки проекту:</li></ul>
<dl><dd><span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">gdb openscada --core core --batch --quiet -ex "thread apply all bt full" -ex "quit" &gt; {ProjName}_core_$(date +%F_%H:%M).crash</span></dd></dl>
<ul><li> або пряму процедуру налагоджувача у інтерактивному режимі, через виклик <b>gdb</b> без аргументів:</li></ul>
<div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 15px"><pre><span class="c"># Перехід до робочої теки проекту OpenSCADA</span>
<span class="o">(</span>gdb<span class="o">)</span> <span class="nb">cd</span> /var/spool/openscada/<span class="o">{</span>ProjName<span class="o">}</span>
<span class="o">(</span>gdb<span class="o">)</span> <span class="nb">cd</span> ~/.openscada/<span class="o">{</span>ProjName<span class="o">}</span>
<span class="c"># Вказання виконувального файлу</span>
<span class="o">(</span>gdb<span class="o">)</span> file /usr/bin/openscada
<span class="c"># Вказання файлу дампу пам'яті програми</span>
<span class="o">(</span>gdb<span class="o">)</span> core-file ./core.26658
<span class="c"># Отримання розвороту стеку виконання — звіту про аварійне завершення</span>
<span class="o">(</span>gdb<span class="o">)</span> thread apply all bt full
<span class="c">#0  0xb7d104c0 in pthread_cancel () from /lib/librt.so.1</span>
<span class="c">#1  0xb7d1edaa in start_thread () from /lib/libpthread.so.0</span>
<span class="c">#2  0xb7dfcf5e in clone () from /lib/libc.so.6</span>
</pre></div>






</div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Documents/How_to/Crash_report/uk">Documents/How_to/Crash_report/uk</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">March 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3012</td></tr></table></body>
</html>