Система отладки программ с различными моделями вычисления

Аннотация

Данная статья посвящена вопросам отладки - поиска ошибок в программе - для современных языков программирования высокого уровня. В настоящее время насчитываются десятки различных языков с различными парадигмами программирования и различными моделями вычисления, и для каждого из них актуален вопрос анализа программы во время ее исполнения. Для большинства языков программирования существуют отладочные инструменты, дающие такую возможность, однако отладка программы, состоящей из частей на нескольких языках, вызывает серьезные трудности.
В статье приводится анализ средств отладки программ для различных языков программирования. Сформулированы минимальные требования к отладчику. Исследованы основные подходы к реализации отладчиков для базовых моделей вычисления - компиляции, интерпретации и динамической компиляции. Выявлены недостатки применения существующих инструментов к отладке программ, совмещающих в себе две различные модели вычисления. Описана система, позволяющая решить выявленную проблему путем объединения возможностей отладчиков каждого из языков. Осуществлена программная реализации описанной системы для отладки программ, комбинирующих языки C# и C++. Протокол взаимодействия отладчиков, лежащий в основе системы, не зависит от реализации ее компонентов и может быть использован для других сочетаний языков.

Сведения об авторах

Mikhail Vladimirovich Aksenov, Московский государственный университет имени М.В. Ломоносова

магистр факультета вычислительной математики и кибернетики

Vladimir Alexandrovich Sukhomlin, Московский государственный университет имени М.В. Ломоносова

заведующий лабораторией открытых информационных технологий, факультет вычислительной математики и кибернетики, доктор технических наук, профессор, Президент Фонда "Лига интернет-медиа"

Литература

[1] Watson D. A Practical Approach to Compiler Construction. Undergraduate Topics in Computer Science. Springer, Cham; 2017. (In Eng.) DOI: https://doi.org/10.1007/978-3-319-52789-5
[2] Dimpsey R., Arora R., Kuiper K. Java server performance: a case study of building efficient, scalable Jvms. IBM Systems Journal. 2000; 39(1):151-174. (In Eng.) DOI: https://doi.org/10.1147/sj.391.0151
[3] Kotzmann T., Wimmer C., Mössenböck H., Rodriguez T., Russell K., Cox D. Design of the Java HotSpot™ client compiler for Java 6. ACM Transactions on Architecture and Code Optimization. 2008; 5(1):1-32. (In Eng.) DOI: https://doi.org/10.1145/1369396.1370017
[4] Everett G.D., McLeod Jr.R. Software Testing: Testing Across the Entire Software Development Life Cycle. John Wiley & Sons; 2007. (In Eng.)
[5] Veeraraghavan K., Lee D., Wester B., Ouyang J., Chen P.M., Flinn J., Narayanasamy S. DoublePlay: Parallelizing Sequential Logging and Replay. ACM Transactions on Computer Systems. 2012; 30(1):1-24. (In Eng.) DOI: https://doi.org/10.1145/2110356.2110359
[6] Elsaka E. Fault Localization Using Hybrid Static/Dynamic Analysis. Advances in Computers. 2017; 105:79-114. (In Eng.) DOI: https://doi.org/10.1016/bs.adcom.2016.12.004
[7] Huang T.-Y., Chou P.-C., Tsai C.-H., Chen H.-A. Automated fault localization with statistically suspicious program states. In: Proceedings of the 2007 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems (LCTES'07). Association for Computing Machinery, New York, NY, USA; 2007. p. 11-20. (In Eng.) DOI: https://doi.org/10.1145/1254766.1254769
[8] Debroy V., Wong W.E. Combining mutation and fault localization for automated program debugging. Journal of Systems and Software. 2014; 90:45-60. (In Eng.) DOI: https://doi.org/10.1016/j.jss.2013.10.042
[9] Ungar D., Lieberman H., Fry C. Debugging and the experience of immediacy. Communications of the ACM. 1997; 40(4):38-43. (In Eng.) DOI: https://doi.org/10.1145/248448.248457
[10] Lawrance J., Bogart C., Burnett M., Bellamy R., Rector K., Fleming S.D. How Programmers Debug, Revisited: An Information Foraging Theory Perspective. IEEE Transactions on Software Engineering. 2010; 39(2):197-215. (In Eng.) DOI: https://doi.org/10.1109/TSE.2010.111
[11] Spinellis D. Modern debugging: the art of finding a needle in a haystack. Communications of the ACM. 2018; 61(11): 124-134. (In Eng.) DOI: https://doi.org/10.1145/3186278
[12] Layman L., Diep M., Nagappan M., Singer J., Deline R., Venolia G. Debugging Revisited: Toward Understanding the Debugging Needs of Contemporary Software Developers. In: 2013 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. Baltimore, MD; 2013. p. 383-392. (In Eng.) DOI: https://doi.org/10.1109/ESEM.2013.43
[13] Parson D., Murray D.J., Chen Y. Object-oriented design patterns for debugging heterogeneous languages and virtual machines. Software: Practice and Experience. 2005; 35(3):255-279. (In Eng.) DOI: https://doi.org/10.1002/spe.634
[14] Tanenbaum A.S., Bos H. Modern Operating Systems. 4th Edition, Pearson; 2015. (In Eng.)
[15] Padala P. Playing with ptrace. Part I. Linux Journal. 2002; 2002(103):5. (In Eng.)
[16] Cifuentes C., Gough K.J. Decompilation of binary programs. Software - Practice & Experience. 1995; 25(7):811-829. (In Eng.) DOI: https://doi.org/10.1002/spe.4380250706
[17] Li Y., Ding Sh., Zhang Q., Italiano D. Debug information validation for optimized code. In: Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020). Association for Computing Machinery, New York, NY, USA; 2020. p. 1052-1065. (In Eng.) DOI: https://doi.org/10.1145/3385412.3386020
[18] Eager M.J., Consulting E. Introduction to the DWARF Debugging Format. Group; 2007. (In Eng.)
[19] Pagan F.G. On Interpreter-Oriented Definitions of Programming Languages. The Computer Journal. 1976; 19(2):151-155. (In Eng.) DOI: https://doi.org/10.1093/comjnl/19.2.151
[20] Romer T.H., Lee D., Voelker G.M., Wolman A., Wong W.A., Baer J.-L., Bershad B.N., Levy H.M. The structure and performance of interpreters. ACM SIGPLAN Notices. 1996; 31(9):150-159. (In Eng.) DOI: https://doi.org/10.1145/248209.237175
[21] Chow F. Intermediate Representation: The increasing significance of intermediate representations in compilers. Queue. 2013; 11(10):30-37. (In Eng.) DOI: https://doi.org/10.1145/2542661.2544374
[22] Aycock J. A brief history of just-in-time. ACM Computing Surveys. 2003; 35(2):97-113. (In Eng.) DOI: https://doi.org/10.1145/857076.857077
[23] Kulkarni P.A. JIT compilation policy for modern machines. In: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications (OOPSLA'11). Association for Computing Machinery, New York, NY, USA; 2011. p. 773-788. (In Eng.) DOI: https://doi.org/10.1145/2048066.2048126
[24] Rogov S.V., Kirillin V.A., Sidelnikov V.V. Optimization of Java Virtual Machine with Safe-Point Garbage Collection. In: 2006 IEEE International Symposium on Consumer Electronics. St. Petersburg; 2006. p. 1-5. (In Eng.) DOI: https://doi.org/10.1109/ISCE.2006.1689453
[25] Bishop J., Horspool R.N., Worrall B. Experience in integrating Java with C# and .NET. Concurrency and Computation: Practice & Experience. Special Issue: 2002 ACM Java Grande–ISCOPE Conference Part I. 2005; 17(5-6):663-680. (In Eng.) DOI: https://doi.org/10.1002/cpe.858
[26] Soldatov A., Balykov G., Zhukov A., Shapovalova E., Pavlov E. .NET Runtime and Tools for Tizen Operating System. In: Ivanov V., Kruglov A., Masyagin S., Sillitti A., Succi G. (ed.) Open Source Systems. OSS 2020. IFIP Advances in Information and Communication Technology. 2020; 582: 190-195. Springer, Cham. (In Eng.) DOI: https://doi.org/10.1007/978-3-030-47240-5_19
Опубликована
2020-09-30
Как цитировать
AKSENOV, Mikhail Vladimirovich; SUKHOMLIN, Vladimir Alexandrovich. Система отладки программ с различными моделями вычисления. Современные информационные технологии и ИТ-образование, [S.l.], v. 16, n. 2, p. 389-397, sep. 2020. ISSN 2411-1473. Доступно на: <http://sitito.cs.msu.ru/index.php/SITITO/article/view/655>. Дата доступа: 08 oct. 2024 doi: https://doi.org/10.25559/SITITO.16.202002.389-397.
Раздел
Исследования и разработки в области новых ИТ и их приложений

Наиболее читаемые статьи этого автора (авторов)

1 2 > >>