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. |