Tiny86 Debugger

Debugger pro Tiny86

Supervisors

Editors

Other contributors

Journal Title

Journal ISSN

Volume Title

Publisher

České vysoké učení technické v Praze
Czech Technical University in Prague

Research Projects

Organizational Units

Journal Issue

Abstract

Programátoři často potřebují kontrolovat stav svých programů za běhu. Právě pro tento účel byl vytvořen speciální nástroj zvaný debugger. Přestože je tento nástroj velmi rozšířen, málokdo ví, jak přesně funguje. Částečně je to proto, že musí být podporován na více úrovních, jako je procesor, operační systém a překladač. Většina kurzů, které o nich vyučují, se debugováním nezabývá. Tato práce zkoumá, jakou podporu musí poskytovat procesor a operační systém, aby bylo možné provádět debugování na nativní úrovni. Implementace malého debuggeru je demonstrována na architektuře x86-64 a operačním systému Linux. Pozornost je poté přesunuta na podporu překladače pro debugování na úrovni zdrojového kódu. Na základě těchto poznatků je v práci představen debugger pro architekturu T86 a jazyk TinyC, které jsou využívány v kurzu překladačů NI-GEN na FIT ČVUT. Tento debugger je plně funkční a usnadňuje studentům práci s architekturou T86. Kromě toho práce představuje návrh a implementaci nového formátu debugovacích informací, který zachovává zajímavé koncepty z reálných debuggerů a zároveň je jeho použití extrémně jednoduché na strojové i lidské úrovni, což je ideální pro jeho zamýšlené použití ve výuce.

Programmers often need to inspect the state of their programs at runtime. A special tool called a debugger exists precisely for this purpose. Despite its widespread use, very few know how exactly this tool works. This is partly because it must be supported at multiple layers, like the CPU, the operating system, and the compiler. Most of the courses that teach about these do not delve into debugging. This thesis explores what support must be provided by the CPU and operating system to enable native-level debugging. A small debugger implementation is demonstrated on the x86-64 architecture and the Linux operating system. Focus is then shifted onto compiler support for source-level debugging. Using this knowledge, the thesis presents a debugger for the T86 architecture and the TinyC language, both of which are used by the NI-GEN compilers course at FIT, CTU. This debugger is fully functional, making it easier for students to work with the T86. Additionally, the thesis presents a design and implementation of a novel format of debugging information that keeps the interesting concepts from real-world debuggers while being extremely simple to use on both machine and human level, which is ideally suited for its intended classroom use.

Description

Citation

Endorsement

Review

Supplemented By

Referenced By