<?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&group=page-Documents%2FHow+to%2FCrash+report&action=page&filter=&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> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span> • ‎<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> > /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" > {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>