Go to page
 

Bibliographic Metadata

Title
Source-Level Debugging Support in an LLVM-IR Interpreter / submitted by Jacob Kreindl, BSc.
AuthorKreindl, Jacob
CensorMössenböck, Hanspeter
PublishedLinz, 2018
Description99 Seiten : Illustrationen
Institutional NoteUniversität Linz, Masterarbeit, 2018
LanguageEnglish
Document typeMaster Thesis
Keywords (EN)debugging / Sulong / LLVM-IR
Keywords (GND)Debugging / Java Virtual Machine / Interpretierer / Quellcode / C++
URNurn:nbn:at:at-ubl:1-21301 Persistent Identifier (URN)
Restriction-Information
 The work is publicly available
Files
Source-Level Debugging Support in an LLVM-IR Interpreter [4.63 mb]
Links
Reference
Classification
Abstract (English)

Sulong executes programs that are compiled to LLVM IR, the language-independent intermediate representation of source code used by the LLVM compiler infrastructure, on the Java Virtual Machine (JVM). The interpreter is based on the Truffle language implementation framework and is part of the GraalVM project. Truffle provides a versatile debugger backend which enables source-level inspection of programs it executes even across language boundaries. This thesis describes how Sulong leverages debug information available in LLVM IR bitcode files to support this feature. First, the thesis describes how Sulong relates programs it executes to locations in their original source code. It further presents the necessary extensions to the interpreter's execution data structures that enable the debugger backend to facilitate source-level single-stepping and set breakpoints. Next, the thesis defines multiple layers of abstraction from LLVM IR as well as Sulong's internal data model that provide a source-level view of an interpreted program's runtime state which includes language-specific display of types, scopes and values. It also introduces specialized data structures to efficiently represent runtime debug information. This thesis demonstrates the capabilities of the presented approach by inspecting a native Ruby extension implemented in C++ at runtime. A performance evaluation further shows that runtime overhead in terms of execution time introduced by instrumentation and symbol inspection is negligible in many cases.

Abstract (German)

Sulong führt Programme auf der Java Virtual Machine (JVM) aus, die zu LLVM IR kompiliert wurden, der sprachunabhängigen Repr\"asentation von Quellcode, die die LLVM Compiler Infrastruktur verwendet. Der Interpreter basiert auf dem Truffle Framework zur Implementierung von Programmiersprachen und ist Teil des GraalVM Projekts. Truffle stellt ein vielseitiges Debugger Backend zur Verfügung, welches das Inspizieren von Programmen, die es ausführt, ermöglicht, auch über mehrere Programmiersprachen hinweg. Diese Masterarbeit beschreibt, wie Sulong Debug Information in LLVM IR Bitcode Dateien verwendet, um dieses Feature zu unterstützen. Die Masterarbeit beschreibt zunächst, wie Sulong die Programme, die es ausführt, auf den ursprünglichen Quellcode zurückführt. Des weiteren präsentiert sie die notwendigen Erweiterungen zu den Datenstrukturen des Interpreters, die es dem Debugger Backend ermöglichen, Gastprogramme auf Level derer ursprünglichen Programmiersprache Schritt-für-Schritt auszuführen und Haltepunkte in ihnen zu setzen. Des weiteren definiert die Masterarbeit mehrere Abstraktionsschichten von LLVM IR und Sulongs internem Datenmodell, die eine Sicht auf den Laufzeitzustand eines Gastprogramms ermöglichen, die dessen ursprünglicher Programmiersprache entspricht, was sprachspezifische Darstellung von Typen, Scopes und Werten beinhaltet. Sie beschreibt auch spezialisierte Datenstrukturen zur effizienten Repräsentation von Debug Information zur Laufzeit. Diese Masterarbeit demonstriert die Fähigkeiten des präsentierten Ansatzes durch das Inspizieren einer Ruby Erweiterung zur Laufzeit, die in C++ implementiert wurde. Eine Performance-Evaluierung zeigt des weiteren, dass der Laufzeit Overhead in Form von Ausführungszeit, den Instrumentierung und Symbolinspektion erzeugen, in vielen Fällen vernachlässigbar ist.

Stats
The PDF-Document has been downloaded 18 times.