Dynamic Analysis Framework for C#/.NET Programs
Knihovna pro dynamickou analýzu programů v jazyce C# na platformě .NET
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/116768Identifiers
Study Information System: 209472
Collections
- Kvalifikační práce [10690]
Author
Advisor
Referee
Bulej, Lubomír
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software Systems
Department
Department of Distributed and Dependable Systems
Date of defense
6. 2. 2020
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
dynamická analýza, data-race, NET CoreKeywords (English)
dynamic analysis, data-races, NET CoreDynamická 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.
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.