<?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="ru">Документы/Как/Отчитаться про аварийное завершение</h1>
		</div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="ru"><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=ru" 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 87% 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;• ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span>&nbsp;• ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../uk/How_to_Crash_report.html" title="Документи/Як/Звітувати про аварійне завершення (100% translated)">Українська</a></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.D1.81.D0.BB.D0.BE.D0.B2.D0.B8.D1.8F_.D0.B8_.D0.B2.D0.B0.D1.80.D0.B8.D0.B0.D0.BD.D1.82.D1.8B_.D0.BE.D1.82.D1.87.D1.91.D1.82.D0.BD.D0.BE.D1.81.D1.82.D0.B8"><span class="tocnumber">1</span> <span class="toctext">Условия и варианты отчётности</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Requirements_for_the_error_report"><span class="tocnumber">2</span> <span class="toctext">Requirements for the error report</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Obtaining_the_file_of_the_pre-mortem_dump_and_its_processing_.28DEPRECATED.29"><span class="tocnumber">3</span> <span class="toctext">Obtaining the file of the pre-mortem dump and its processing (DEPRECATED)</span></a></li>
</ul>
</div>

<h2><span class="mw-headline" id=".D0.A3.D1.81.D0.BB.D0.BE.D0.B2.D0.B8.D1.8F_.D0.B8_.D0.B2.D0.B0.D1.80.D0.B8.D0.B0.D0.BD.D1.82.D1.8B_.D0.BE.D1.82.D1.87.D1.91.D1.82.D0.BD.D0.BE.D1.81.D1.82.D0.B8"><span class="mw-headline-number">1</span> Условия и варианты отчётности</span></h2>
<p>Сообщить про ошибку в программе может каждый, для её рассмотрения разработчиками на общих основаниях свободной технической поддержки, за рамками договора коммерческой технической поддержки или выполнения работ этого пользователя. Но будут рассмотрены разработчиками только ошибки, которые являются ошибками непосредственно OpenSCADA, не являются проблемами окружения и внешних библиотек и воспроизводятся у разработчика на демонстрационных конфигурациях последних версий OpenSCADA и присутствующем оборудовании проекта OpenSCADA!
</p><p>Основным и единственным официальным местом сообщения про ошибки на общих основаниях свободной технической поддержки является раздел форума "<a class="external text" href="http://oscada.org/ru/forum/topics/otslezhivanie_oshibok/" rel="nofollow noreferrer noopener" target="_blank">Отслеживание ошибок</a>", где <a class="external text" href="http://oscada.org/ru/razrabotka/razrabotchiki/" 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/ru/forum/posts/otslezhivanie_oshibok/pravila/" rel="nofollow noreferrer noopener" target="_blank">здесь</a>.
</p><p>Перед формированием отчёта про ошибку на общих основаниях свободной технической поддержки, нужно на <a class="external text" href="http://oscada.org/ru/forum/metki/" 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/ru/uslugi/tekh-podderzhka/" 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/forum/topics/tekhnichna_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/ru/razrabotka/razrabotchiki/" rel="nofollow noreferrer noopener" target="_blank">разработчика</a>, а также <a class="external text" href="http://oscada.org/ru/forum/lichnye-soobshchenija/" rel="nofollow noreferrer noopener" target="_blank">приватным сообщением форума</a> (для зарегистрированных пользователей).</li></ul>
<h2><span class="mw-headline" id="Requirements_for_the_error_report"><span class="mw-headline-number">2</span> Requirements for the error report</span></h2>
<p>In order to exclude unnecessary overhead questions, or even premature closure of the error in the state "Not a bug", and to speed up the process of localization of the problem, it is recommended to follow the following requirements for the report:
</p>
<ul><li> Specify the environment of the execution of OpenSCADA, that is: distribution and version of the operating system.</li>
<li> Specify the version of OpenSCADA, including the SVN revision of the working branch.</li>
<li> Specify the configuration and execution features.</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> In the case of free support, it is mandatory to reproduce the problem in standard configurations and in the <a href="Quick_start.html" title="Special:MyLanguage/Documents/Quick start">demo database</a>, especially when it is an emergency crash and it is not possible to generate a crash report or it is indescribable.</dd></dl>
<ul><li> Describe the actions that cause the error.</li>
<li> Attach the OpenSCADA message protocol for a session with the error.</li>
<li> Include report of the program crash — unroll the stack at the time of the crash.
<ul><li> the report is usually generated automatically by generating it from the crashing process or pre-mortem memory dump (earlier) — just install <b>GDB</b>; refer to the next section for some specific here;</li>
<li> to increase significantly the use of the stack unrolling, you must add debugging information, by setting the "-g" option during compilation, or install the ready debug package <b>openscada-dbg</b>;</li>
<li> for problems, related to the blocking of one or more OpenSCADA threads, it may be useful to manually interrupt the program by call <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">openscada-proj snapshot {ProjID} </span> or the "SIGSEGV" signal, which will cause the formation of the fall-down report with the information about the hangover.</li></ul></li></ul>
<h2><span class="mw-headline" id="Obtaining_the_file_of_the_pre-mortem_dump_and_its_processing_.28DEPRECATED.29"><span class="mw-headline-number">3</span> Obtaining the file of the pre-mortem dump and its processing (DEPRECATED)</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> The section is not actual more for new versions of OpenSCADA, but you can use its content for old versions or in specific and manual learning the crashes!
</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/ru">Documents/How_to/Crash_report/ru</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body>
</html>