<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">intechngu</journal-id><journal-title-group><journal-title xml:lang="ru">Вестник НГУ. Серия: Информационные технологии</journal-title><trans-title-group xml:lang="en"><trans-title>Vestnik NSU. Series: Information Technologies</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-7900</issn><issn pub-type="epub">2410-0420</issn><publisher><publisher-name>НГУ</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.25205/1818-7900-2024-22-1-5-20</article-id><article-id custom-type="elpub" pub-id-type="custom">intechngu-256</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Статьи</subject></subj-group></article-categories><title-group><article-title>Построение комплекса автоматизированной отладки фрагментированных программ</article-title><trans-title-group xml:lang="en"><trans-title>Constructing a Complex for Automated Debugging of Fragmented Programs</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-8247-5736</contrib-id><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Власенко</surname><given-names>А. Ю.</given-names></name><name name-style="western" xml:lang="en"><surname>Vlasenko</surname><given-names>A. Yu.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Власенко Андрей Юрьевич, кандидат технических наук, доцент кафедры параллельных вычислений ФИТ НГУ, научный сотрудник лаборатории синтеза параллельных программ ИВМиМГ СО РАН</p><p>Новосибирск</p></bio><bio xml:lang="en"><p>Andrey Yu. Vlasenko, Candidate of Technical Sciences, Associate Proffessor of the Parallel Computations Department, Novosibirsk State University </p><p>Novosibirsk</p></bio><email xlink:type="simple">a.vlasenko@g.nsu.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-0404-6802</contrib-id><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Мичуров</surname><given-names>М. А.</given-names></name><name name-style="western" xml:lang="en"><surname>Michurov</surname><given-names>M. A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Мичуров Михаил Антонович, ассистент кафедры параллельных вычислений ФИТ</p><p>Новосибирск</p></bio><bio xml:lang="en"><p>Mihail A. Michurov, Assistant of the Parallel Computations Department</p><p>Novosibirsk</p></bio><email xlink:type="simple">m.michurov@g.nsu.ru</email><xref ref-type="aff" rid="aff-2"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Царёв</surname><given-names>В. Д.</given-names></name><name name-style="western" xml:lang="en"><surname>Tsarev</surname><given-names>V. D.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Царёв Василий Дмитриевич, студент ФИТ </p><p>Новосибирск</p></bio><bio xml:lang="en"><p>Vasiliy D. Tsarev, Student of the Faculty of Information Technologies</p><p>Novosibirsk</p></bio><email xlink:type="simple">v.tsarev@g.nsu.ru</email><xref ref-type="aff" rid="aff-2"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Курбатов</surname><given-names>М. А.</given-names></name><name name-style="western" xml:lang="en"><surname>Kurbatov</surname><given-names>M. A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>Курбатов Максим Андреевич, студент ФИТ </p><p>Новосибирск</p></bio><bio xml:lang="en"><p>Maksim A. Kurbatov, Student of the Faculty of Information Technologies</p><p>Novosibirsk</p></bio><email xlink:type="simple">m.kurbatov@g.nsu.ru</email><xref ref-type="aff" rid="aff-2"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Новосибирский государственный университет;&#13;
Институт вычислительной математики и математической геофизики СО РАН</institution><country>Россия</country></aff><aff xml:lang="en"><institution>Novosibirsk State University;&#13;
Institute of Computational Mathematics and Mathematical Geophysics SB RAS</institution><country>Russian Federation</country></aff></aff-alternatives><aff-alternatives id="aff-2"><aff xml:lang="ru"><institution>Новосибирский государственный университет</institution><country>Россия</country></aff><aff xml:lang="en"><institution>Novosibirsk State University</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2024</year></pub-date><pub-date pub-type="epub"><day>16</day><month>07</month><year>2024</year></pub-date><volume>22</volume><issue>1</issue><fpage>5</fpage><lpage>20</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Власенко А.Ю., Мичуров М.А., Царёв В.Д., Курбатов М.А., 2024</copyright-statement><copyright-year>2024</copyright-year><copyright-holder xml:lang="ru">Власенко А.Ю., Мичуров М.А., Царёв В.Д., Курбатов М.А.</copyright-holder><copyright-holder xml:lang="en">Vlasenko A.Y., Michurov M.A., Tsarev V.D., Kurbatov M.A.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://intechngu.elpub.ru/jour/article/view/256">https://intechngu.elpub.ru/jour/article/view/256</self-uri><abstract><p>В статье кратко изложена концепция фрагментированного программирования, а также принципиальное устройство системы автоматического конструирования параллельных программ LuNA (Language for Numerical Algorithms) и одноименного языка программирования. Описаны такие свойства системы LuNA, как возможность работы на вычислительных системах разных типов, динамическая балансировка нагрузки на узлы и процессорные ядра вычислительного кластера и другие.</p><p>Целью описываемой в статье работы является создание программного комплекса отладки фрагментированных программ в системе LuNA. В связи с этим приведен ряд ошибок, специфических для фрагментированных программ. Перечислены подходы к отладке параллельных программ и проанализирована их применимость к фрагментированным программам.</p><p>Подробно изложена реализация методов статического анализа и «посмертного анализа» в авторских средствах автоматизированной отладки фрагментированных программ для системы LuNA. Два средства статического анализа используют такие промежуточные представления, как абстрактное синтаксическое дерево и граф информационных зависимостей. Третье средство базируется на оригинальном методе статического анализа, заключающемся в генерации Prolog-программы, содержащей набор фактов об исходной LuNA-программе и соответствующие ошибочным ситуациям правила. При последующем запуске Prolog-программы факты проверяются на соответствие правилам, в результате чего пользователю выдаются сообщения о найденных ошибках. Представлена модель интеграции созданных средств в единый комплекс автоматизированной отладки фрагментированных программ, а также утилита автоматизированного тестирования инструментов отладки LuNA-программ.</p></abstract><trans-abstract xml:lang="en"><p>The paper is devoted to the authors’ tools for automated debugging of fragmented programs in the LuNA (Language for Numerical Algorithms) system. The LuNA system uses approach of fragmented programming, which allows the researcher to design parallel programs in an automated mode.</p><p>The main problem discussed in the paper is the detection of errors specific to LuNA programs. The operation algorithms of four developed tools for automated debugging of LuNA programs are described. Three of them are based on the static analysis approach and differ in the intermediate representations used. The first uses an abstract syntax tree (AST). The second uses a data dependency graph (DDG). The third tool generates a Prolog program containing a set of facts about the original LuNA program and rules corresponding to erroneous situations. Due to the use of various intermediate representations, each of the static analysis tools is able to detect its own types of errors. The last tool uses the “post-mortem analysis” approach. Each process of a parallel program collects a trace file during its operation and at the end of the work these files are analyzed by a special utility.</p><p>The paper also describes the developed utility for testing automated debugging tools. The set of test programs with various errors, as well as error-free programs, has been developed  for this utility.</p><p>The last part describes the designed mechanism for integrating the developed automated debugging tools into a single software package.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>фрагментированное программирование</kwd><kwd>система LuNA</kwd><kwd>логические ошибки</kwd><kwd>автоматизированная отладка</kwd><kwd>статический анализ</kwd><kwd>«посмертный анализ</kwd></kwd-group><kwd-group xml:lang="en"><kwd>fragmented programming</kwd><kwd>logical errors</kwd><kwd>automated debugging</kwd><kwd>static analysis</kwd><kwd>“post-mortem analysis”&#13;
Funding</kwd></kwd-group><funding-group><funding-statement xml:lang="ru">Исследования выполнены в рамках государственного задания ИВМиМГ СО РАН 0251-2022-0005</funding-statement><funding-statement xml:lang="en">This work was carried out under state contract with ICMMG SB RAS 0251-2022-0005</funding-statement></funding-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Malyshkin V., Perepelkin V., Lyamin A. Trace Balancing Technique for Trace Playback in LuNA System // Malyshkin V. (Eds) Parallel Computing Technologies. PaCT 2023. Lecture Notes in Computer Science. 2023. Vol. 14098. Springer, Cham. P. 4250. DOI: 10.1007/978-3-031-41673-6_4</mixed-citation><mixed-citation xml:lang="en">Malyshkin V., Perepelkin V., Lyamin A. Trace Balancing Technique for Trace Playback in LuNA System. In: Malyshkin, V. (eds) Parallel Computing Technologies. PaCT 2023. Lecture Notes in Computer Science, 2023, vol. 14098. Springer, Cham., pp. 42–50. DOI: 10.1007/978-3-031-41673-6_4.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Малышкин В. Э. Технология фрагментированного программирования // Вестник ЮУрГУ. Серия: Вычислительная математика и информатика. 2012. № 46 (305).C. 4555. DOI: 10.14529/cmse120104</mixed-citation><mixed-citation xml:lang="en">Malyshkin V. E. Technology of fragmented programming. Vestnik YuUrGU. Series: Computational Mathematics and Software Engineering, 2012, no. 46 (305), pp. 45–55 (in Russ.). DOI: 10.14529/cmse120104</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Зубов М. В., Пустыгин А. Н., Старцев Е. В. Применение универсальных промежуточных представлений для статического анализа исходного программного кода // Доклады Томского гос. ун-та систем управления и радиоэлектроники. 2013. № 1 (27). С. 64–68.</mixed-citation><mixed-citation xml:lang="en">Zubov M. V., Pustygin A. N., Starcev E. V. The use of universal intermediate representations for static analysis of the source code. Reports of Tomsk State University of Control Systems and Radioelectronics, 2013, no. 1(27), pp. 64–68.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Flederer F., Ostermayer L., Seipel D., Montenegro S. Source Code Verifi cation for Embedded Systems using Prolog // Electronic Proceedings in Theoretical Computer Science. 2016. Vol. 234. P. 88–103. DOI: 10.4204/EPTCS.234.7</mixed-citation><mixed-citation xml:lang="en">Flederer F., Ostermayer L., Seipel D., Montenegro S. Source Code Verifi cation for Embedded Systems using Prolog. Electronic Proceedings in Theoretical Computer Science, 2016, vol. 234, pp. 88–103. DOI: 10.4204/EPTCS.234.7</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Abramson D. A., Watson G., Le P. D. Guard: a tool for migrating scientifi c applications to the .NET Framework // Sloot P. M. A., Tan C. J. K., Dongarra J. J., &amp; Hoekstra A. G. (Eds.) Computational Science – ICCS 2002: International Conference Amsterdam, The Netherlands, April 21–24, 2002 Proceedings. P. 834843. (Lecture Notes in Computer Science; Vol. 2330). Springer. DOI: 10.1007/3-540-46080-2_88</mixed-citation><mixed-citation xml:lang="en">Abramson D. A., Watson G., Le P. D. Guard: a tool for migrating scientifi c applications to the .NET Framework. In P. M. A. Sloot, C. J. K. Tan, J. J. Dongarra, &amp; A. G. Hoekstra (Eds.) Computational Science – ICCS 2002: International Conference Amsterdam, The Netherlands, April 21–24, 2002 Proceedings, pp. 834843. (Lecture Notes in Computer Science; Vol. 2330). Springer. DOI: 10.1007/3-540-46080-2_88</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Bakhtin V. A., Kataev N. A., Kolganov A. S., Yakobovskiy M. V., Zaharov D. A. Automation of programming for promising high-performance computing systems // Malyshkin V. (eds) Parallel Computing Technologies. PaCT 2023. Lecture Notes in Computer Science. Cham: Springer, 2023. Vol. 14098. P. 3–17.</mixed-citation><mixed-citation xml:lang="en">Bakhtin V. A., Kataev N. A., Kolganov A. S., Yakobovskiy M. V., Zaharov D. A. Automation of programming for promising high-performance computing systems. In: Malyshkin V. (eds) Parallel Computing Technologies. PaCT 2023. Lecture Notes in Computer Science, Cham: Springer, 2023, vol. 14098, pp. 3–17.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Malyshkin V., Vlasenko A., Michurov M. Automated Debugging of Fragmented Programs in LuNA System // Proc. of Mathematical Modeling and Supercomputer Technologies 2022. Communications in Computer and Information Science. 2022. Vol. 1750. P. 266–280. DOI: 10.1007/978-3-031-24145-1_22</mixed-citation><mixed-citation xml:lang="en">Malyshkin V., Vlasenko A., Michurov M. Automated Debugging of Fragmented Programs in LuNA System. Proc. of Mathematical Modeling and Supercomputer Technologies 2022. Communications in Computer and Information Science, 2022, vol. 1750, pp. 266–280. DOI: 10.1007/978-3-031-24145-1_22</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Protze J., Hilbrich T., Schulz M., de Supinski B. R. MPI Runtime Error Detection with MUST: A Scalable and Crash-Safe Approach // Proc. of 43rd International Conference on Parallel Processing Workshops. Minneapolis, MN, USA, 2014, p. 206–215. DOI: 10.1109/ICPPW.2014.37</mixed-citation><mixed-citation xml:lang="en">Protze J., Hilbrich T., Schulz M., de Supinski B. R. MPI Runtime Error Detection with MUST: A Scalable and Crash-Safe Approach. Proc. of 43rd International Conference on Parallel Processing Workshops. Minneapolis, MN, USA, 2014, p. 206–215. DOI: 10.1109/ICPPW.2014.37</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Карпов Ю. Г. MODEL CHECKING. Верификация параллельных и распределенных программных систем. СПб.: БХВ-Петербург, 2010. 560 с.</mixed-citation><mixed-citation xml:lang="en">Karpov J. G. MODEL CHECKING. Verifi cation of parallel and distributed software systems. Saint Petersburg, BHV-Peterburg publ., 2010, 560 p. (in Russ.)</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Holzmann G. J., Joshi R. Model-Driven Software Verifi cation // Graf S., Mounier L. (Eds) Model Checking Software. Proc. of SPIN 2004. Lecture Notes in Computer Science. Vol. 2989. Springer, Berlin, Heidelberg. P. 76–91. DOI: 10.1007/978-3-540-24732-6_6</mixed-citation><mixed-citation xml:lang="en">Holzmann G. J., Joshi R. Model-Driven Software Verifi cation. In: Graf S., Mounier, L. (eds) Model Checking Software. Proc. of SPIN 2004. Lecture Notes in Computer Science. Springer, Berlin, Heidelberg, 2004, vol. 2989, p. 7691. DOI: 10.1007/978-3-540-24732-6_6</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Fokkink W. Distributed Algorithms, second edition: An Intuitive Approach. MIT Press, 2018.272 p.</mixed-citation><mixed-citation xml:lang="en">Fokkink W. Distributed Algorithms, second edition: An Intuitive Approach. MIT Press, 2018, 272 p.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Касьянов В. Н., Евстигнеев В. А. Графы в программировании: обработка, визуализация и применение. СПб.: БХВ-Петербург, 2003. 1104 c.</mixed-citation><mixed-citation xml:lang="en">Kas’janov V. N., Evstigneev V. A. Graphs in programming: processing, visualization and application. Saint Petersburg, BHV-Peterburg publ., 2003, 1104 p. (in Russ.)</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Белеванцев А. А. Многоуровневый статический анализ исходного кода программ для обеспечения качества программ // Программирование. 2017.Т. 43, № 6. С. 3–25.</mixed-citation><mixed-citation xml:lang="en">Belevancev A. A. Multilevel static analysis of the source code to ensure the quality of programs. Programming and Computer Software, 2017, vol. 43, no. 6, p. 325. (in Russ.)</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">Krinke J. Information Flow Control and Taint Analysis with Dependence Graphs. Vancouver: Proc. of 3d International Workshop on Code Based Software Security Assessments (CoBaSSA). 2007. P. 6–9.</mixed-citation><mixed-citation xml:lang="en">Krinke J. Information Flow Control and Taint Analysis with Dependence Graphs. Vancouver: Proc. of 3d International Workshop on Code Based Software Security Assessments (CoBaSSA), 2007, p. 69.</mixed-citation></citation-alternatives></ref><ref id="cit15"><label>15</label><citation-alternatives><mixed-citation xml:lang="ru">Kuck D. J., Kuhn R. H., Padua D. A., Leasure B., Wolfe M. Dependence graphs and compiler optimizations // Proc. of the 8th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL). 1981. P. 207–218. DOI: 10.1145/567532.567555</mixed-citation><mixed-citation xml:lang="en">Kuck D. J., Kuhn R. H., Padua D. A., Leasure B., Wolfe M. Dependence graphs and compiler optimizations. Proc. of the 8th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL), 1981, p. 207218. DOI: 10.1145/567532.567555</mixed-citation></citation-alternatives></ref><ref id="cit16"><label>16</label><citation-alternatives><mixed-citation xml:lang="ru">Smaragdakis Y., Bravenboer M. Using Datalog for Fast and Easy Program Analysis // de Moor O., Gottlob G., Furche T., Sellers A. (Eds) Datalog Reloaded. Lecture Notes in Computer Science. Springer, Berlin, Heidelberg, 2010. Vol. 6702. P. 245–251. DOI: 10.1007/978-3-642-24206-9_14</mixed-citation><mixed-citation xml:lang="en">Smaragdakis Y., Bravenboer M. Using Datalog for Fast and Easy Program Analysis. In: de Moor O., Gottlob G., Furche T., Sellers A. (eds) Datalog Reloaded. Lecture Notes in Computer Science.. Springer, Berlin, Heidelberg, 2010, vol. 6702, p. 245251. DOI: 10.1007/978-3-642-24206-9_14</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
