Thesis (Selection of subject)Thesis (Selection of subject)(version: 368)
Thesis details
   Login via CAS
Dynamic Analysis Framework for C#/.NET Programs
Thesis title in Czech: Knihovna pro dynamickou analýzu programů v jazyce C# na platformě .NET
Thesis title in English: Dynamic Analysis Framework for C#/.NET Programs
Key words: dynamická analýza, data-race, .NET Core
English key words: dynamic analysis, data-races, .NET Core
Academic year of topic announcement: 2018/2019
Thesis type: diploma thesis
Thesis language: angličtina
Department: Department of Distributed and Dependable Systems (32-KDSS)
Supervisor: doc. RNDr. Pavel Parízek, Ph.D.
Author: hidden - assigned and confirmed by the Study Dept.
Date of registration: 20.11.2018
Date of assignment: 05.12.2018
Confirmed by Study dept. on: 10.12.2018
Date and time of defence: 06.02.2020 09:00
Date of electronic submission:06.01.2020
Date of submission of printed version:06.01.2020
Date of proceeded defence: 06.02.2020
Opponents: doc. Ing. Lubomír Bulej, Ph.D.
 
 
 
Guidelines
Dynamic analysis is a popular approach for detecting bugs in program code, runtime checking and other software engineering tasks.
The goal of this project is to design and implement a dynamic analysis framework for C#/.NET programs.
Some concepts used in existing frameworks that support other programming languages, for example RoadRunner and DiSL for Java, will be adapted.
In particular, the framework should be extensible with custom analysis plugins and highly configurable, allowing the user to specify what information is recorded during the run of a program subject to analysis.
Another important functional requirement is that information about recorded events, such as field accesses and method calls, has to be passed to the analysis plugins for further processing.
Code instrumentation techniques will be used for compile-time modification of input programs with the goal of adding the code responsible for recording events.
Instrumentation will be performed at the level of source code (abstract syntax tree) or intermediate code (MSIL, CIL).
Few example plugins will be implemented just for demonstration.
We will consider especially well-known algorithms for dynamic detection of concurrency errors, such as Eraser and FastTrack.
References
1. RoadRunner: dynamic analysis framework for Java, http://www.cs.williams.edu/~freund/rr/
2. DiSL: domain specific language for Java bytecode instrumentation, https://disl.ow2.org/
3. Roslyn compiler infrastructure for C# and Visual Basic, https://github.com/dotnet/roslyn
4. Mono.Cecil: library for inspection and manipulation with .NET intermediate language (CIL), https://github.com/jbevain/cecil
5. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T.E. Anderson. Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs. SOSP 1997
6. C. Flanagan and S.N. Freund. FastTrack: Efficient and Precise Dynamic Race Detection. PLDI 2009.
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html