OpenSCADAWiki: Doc/ Crash Report ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/CrashReport from 2010-09-13 10:02:21..

Руководство по локализации сбоев и подготовке отчётов о них

Введение

Отладке и тестированию системы OpenSCADA уделяется значительное время разработчиков, однако в виду ограниченности ресурсов да и практической невозможности охватить все варианты конфигурации и исполнения системы OpenSCADA ошибки могут проявляться как в виде невыполнения отдельных функций, некорректности их выполнения и даже аварийного завершения программы у пользователей. Понимание этого со стороны пользователя очень важно, и с его стороны требуется добрая воля для затраты некоторого времени на подготовку отчёта о проблеме с целью её последующего устранения разработчиками.


Перед подготовкой уведомления о проблеме рекомендуется ознакомится с перечнем ошибок и замечаний в соответствующем разделе Ошибки и замечания к системе OpenSCADA.

Требования к уведомлению об ошибке

Для исключения лишних наводящих вопросов и для ускорения процесса локализации проблемы рекомендуется следовать следующим требованиям к уведомлению.

Способы уведомления

Уведомить об ошибке в системе OpenSCADA можно несколькими способами:

Получение файла предсмертного дампа и его обработка

В ОС Linux при сбое программ ядро ОС может формировать предсмертный дамп памяти программы. С помощью этого дампа часто можно выявить место в программе, вызвавшее аварийную остановку. Для включения возможности генерации предсмертного дампа памяти программы ядром необходимо выполнить команды:

# Проверка возможности генерации дампов памяти
# Указывает "core", если включена
$ cat /proc/sys/kernel/core_pattern
# Включение генерации дампов памяти
$ echo "core" > /proc/sys/kernel/core_pattern


После этого необходимо перед вызовом OpenSCADA указать команду "ulimit -c unlimited". Например, это можно сделать в скриптах вызова специальной конфигурации: /etc/openscada_demo_ru и /etc/openscada_start:

#!/bin/sh
ulimit -c unlimited
openscada --Config=/etc/oscada_demo_ru.xml $@


После этого достаточно убедиться в том, что пользователь, запускающий OpenSCADA, имеет право записи в рабочую директорию OpenSCADA, параметр "Workdir" в конфигурационном файле программы.


Далее запускается система OpenSCADA и воспроизводится аварийное завершение, в результате которого в рабочей директории OpenSCADA создаётся файл core.N, где N -- номер аварийно завершившегося процесса.


Далее необходимо обработать полученный файл дампа памяти с целью получения разворот стека исполнения на момент аварии. Для этой цели понадобится отладчик 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


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]