Original title:
Knihovna pro dynamickou analýzu programů v jazyce C# na platformě .NET
Translated title:
Dynamic Analysis Framework for C#/.NET Programs
Authors:
Čižmárik, Andrej ; Parízek, Pavel (advisor) ; Bulej, Lubomír (referee) Document type: Master’s theses
Year:
2020
Language:
eng Abstract:
[eng][cze] Dynamic analysis is a technique used to analyse the behaviour of programs, which can be utilized when searching for various software errors. Nowadays, there is a trend in software development towards multi-threaded programs that are, undeniably, prone to race conditions. Furthermore, software errors that stem from timing issues and incorrect ordering of operations across individual threads are generally hard to find, since they are by nature non-deterministic. We decided to implement a dynamic analysis framework for C# programs, along with two well-known algorithms capable of detecting and predicting data-races. As a result, we created an extensible and configurable tool, SharpDetect, that supports dynamic analysis of CIL programs created by compilation from C# source code on platforms supported by .NET Core. To demonstrate its practical usefulness, SharpDetect was successfully applied on NetMQ, C# implementation of ZeroMQ, where it found one real software error.Dynamická analýza je metóda používaná na analýzu chovania programov, čo môže byť využité pri hľadaní rôznych chýb v softwari. V dnešnej dobe je trend vo vývoji viacvláknových programov, kde môžu bezpochyby nas- tať problémy so synchronizáciou vlákien. Navyše, pôvod chýb v softwari, ktoré sú spôsobené rozdielnym naplánovaním a usporiadaním operácií, je ťažko odhaliteľný, nakoľko sú tieto chyby nedeterministické. Rozhodli sme sa naimplementovať framework na dynamickú analýzu programov napísaných v jazyku C# spolu s dvoma známymi algoritmami, ktoré sa používajú na de- tekciu a predikciu data-race-ov. Vo výsledku sme vytvorili konfigurovateľný a rozšíriteľný nástroj SharpDetect, ktorý podporuje dynamickú analýzu CIL programov. Konkrétne ide o programy napísané v jazyku C# pre platformy podporované frameworkom .NET Core. Na ukážku užitočnosti vytvoreného riešenia bol SharpDetect úspešne nasadený na knižnicu NetMQ, čo je imple- mentácia ZeroMQ v programovacom jazyku C# a kde našiel jednu skutočnú chybu.
Keywords:
data-races; dynamic analysis; NET Core; data-race; dynamická analýza; NET Core
Institution: Charles University Faculties (theses)
(web)
Document availability information: Available in the Charles University Digital Repository. Original record: http://hdl.handle.net/20.500.11956/116768