Dynamic Analysis Framework for C#/.NET Programs
Knihovna pro dynamickou analýzu programů v jazyce C# na platformě .NET
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/116768Identifikátory
SIS: 209472
Kolekce
- Kvalifikační práce [10932]
Autor
Vedoucí práce
Oponent práce
Bulej, Lubomír
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
6. 2. 2020
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
dynamická analýza, data-race, NET CoreKlíčová slova (anglicky)
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.