Íàëàãîäæåííþ òà òåñòóâàííþ ñèñòåìè OpenSCADA ïðèä³ëÿºòüñÿ çíà÷íèé ÷àñ ðîçðîáíèê³â, îäíàê ó çâ'ÿçêó ³ç îáìåæåí³ñòþ ðåñóðñ³â òà é ïðàêòè÷íîþ íåìîæëèâ³ñòþ îõîïèòè âñ³ âàð³àíòè êîíô³ãóðàö³¿ òà âèêîíàííÿ ñèñòåìè OpenSCADA ïîìèëêè ìîæóòü ïðîÿâëÿòèñÿ ÿê ó âèãëÿä³ íåâèêîíàííÿ îêðåìèõ ôóíêö³é, íåêîðåêòíîñò³ ¿õ âèêîíàííÿ òà íàâ³òü àâàð³éíîãî çàâåðøåííÿ ïðîãðàìè ó êîðèñòóâà÷³â. Ðîçóì³ííÿ öüîãî ç áîêó êîðèñòóâà÷à äóæå âàæëèâå, òà ç éîãî áîêó ïîòðåáóºòüñÿ äîáðà âîëÿ äëÿ ïðèä³ëåííÿ äåÿêîãî ÷àñó íà ïðèãîòóâàííÿ çâ³òó ïðî ïðîáëåìó ç ìåòîþ ¿¿ íàñòóïíîãî óñóíåííÿ ðîçðîáíèêàìè.
Ïåðåä ïðèãîòóâàííÿì ïîâ³äîìëåííÿ ïðî ïðîáëåìó ðåêîìåíäóºòüñÿ îçíàéîìèòèñÿ ç ïåðåë³êîì ïîìèëîê òà çàóâàæåíü ó â³äïîâ³äíîìó ðîçä³ë³ Ïîìèëêè òà çàóâàæåííÿ äî ñèñòåìè OpenSCADA.
Äëÿ âèêëþ÷åííÿ çàéâèõ íàâ³äíèõ ïèòàíü òà äëÿ ïðèñêîðåííÿ ïðîöåñó ëîêàë³çàö³¿ ïðîáëåìè ðåêîìåíäóºòüñÿ ñë³äóâàòè íàñòóïíèì âèìîãàì äî ïîâ³äîìëåííÿ.
Ïîâ³äîìèòè ïðî ïîìèëêó ó ñèñòåì³ OpenSCADA ìîæíà äåê³ëüêîìà ñïîñîáàìè:
Ó ÎÑ Linux, ï³ä ÷àñ çáîþ ïðîãðàì, ÿäðî ÎÑ ìîæå ôîðìóâàòè ïåðåäñìåðòíèé äàìï ïàì'ÿò³ ïðîãðàìè. Çà äîïîìîãîþ öüîãî äàìïó ÷àñòî ìîæíà âèÿâèòè ì³ñöå ó ïðîãðàì³, ÿêå âèêëèêàëî àâàð³éíó çóïèíêó. Äëÿ âêëþ÷åííÿ ìîæëèâîñò³ ãåíåðàö³¿ ïåðåäñìåðòíîãî äàìïó ïàì'ÿò³ ïðîãðàìè ÿäðîì ïîòð³áíî âèêîíàòè êîìàíäè:
# Ïåðåâ³ðêà ìîæëèâîñò³ ãåíåðàö³¿ äàìï³â ïàì'ÿò³
# Ïîâåðòຠ"core", ÿêùî âêëþ÷åíà
$ cat /proc/sys/kernel/core_pattern
# Âêëþ÷åííÿ ãåíåðàö³¿ äàìï³â ïàì'ÿò³
$ echo "core" > /proc/sys/kernel/core_pattern
ϳñëÿ öüîãî ïîòð³áíî çíÿòè îáìåæåííÿ íà ðîçì³ð ãåíåðîâàíîãî ôàéëó äàìïó, äëÿ ÷îãî OpenSCADA ìîæíà çàïóñòèòè ç àðãóìåíòîì --CoreDumpAllow àáî âèêîíàòè ñïåö³àëüíó êîìàíäó ïåðåä âèêëèêîì OpenSCADA "$ ulimit -c unlimited".
Ïîò³ì äîñòàòíüî ïåðåêîíàòèñÿ ó òîìó, ùî êîðèñòóâà÷, ÿêèé çàïóñêຠOpenSCADA, ìຠïðàâî çàïèñó äî ðîáî÷î¿ äèðåêòî𳿠OpenSCADA, ïàðàìåòð "Workdir" ó êîíô³ãóðàö³éíîìó ôàéë³ ïðîãðàìè.
Äàë³ çàïóñêàºòüñÿ ñèñòåìà OpenSCADA òà â³äòâîðþºòüñÿ àâàð³éíå çàâåðøåííÿ, ó ðåçóëüòàò³ ÿêîãî ó ðîáî÷³é äèðåêòî𳿠OpenSCADA ñòâîðþºòüñÿ ôàéë core.
Òèïîâ³ ñêðèïòè çàïóñêó OpenSCADA, ÿê³ ïîñòà÷àþòüñÿ ó ïàêåòàõ äèñòðèáóòèâ³â OpenSCADA ç âåðñ³¿ 0.8.0, âêëþ÷àþòü ãåíåðàö³þ äàìïó ïàì'ÿò³ òà àâòîìàòè÷íî ôîðìóþòü ç íüîãî çâ³ò çâîðîòí³õ âèêëèê³â (backtrace) ó âèãëÿä³ ôàéë³â "AGLKS_core_2016-03-20_18.17.crash" (äëÿ 0.9 Work) àáî "crash_2012-01-05_11:05.txt" (äëÿ 0.8 LTS) ó ðîáî÷³é äèðåêòî𳿠ïðîåêòó.
ßêùî ñôîðìóâàâñÿ ôàéë äàìïó ïàì'ÿò³ core, à çâ³ò çâîðîòí³õ âèêëèê³â àâòîìàòè÷íî íå ñôîðìóâàâñÿ, òî éìîâ³ðíî íå âñòàíîâëåíî íàëàøòîâóâà÷à "gdb". Ó òàêîìó âèïàäêó Âè ìàºòå éîãî âñòàíîâèòè òà âèêëèêàòè âðó÷íó êîìàíäó, ³ç ðîáî÷î¿ äèðåêòî𳿠äëÿ ãëîáàëüíî¿ êîíô³ãóðàö³¿:
Àáî-æ âèêîíàòè ïðîöåäóðó ó ³íòåðàêòèâíîìó ðåæèì³, äëÿ ãëîáàëüíî¿ êîíô³ãóðàö³¿:
# Ïåðåõ³ä äî ðîáî÷î¿ äèðåêòî𳿠OpenSCADA
(gdb) cd /var/spool/openscada
# Âêàçàííÿ âèêîíóâàëüíîãî ôàéëó, íå ñêðèïòè!
(gdb) file /usr/bin/openscada
# Âêàçàííÿ ôàéëó äàìïó ïàì'ÿò³ ïðîãðàìè
(gdb) core-file /var/spool/openscada/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