Buchkritik: Building a Debugger

Wer verfolgt, wie Sy Brand seinen eigenen Debugger von Grund auf entwickelt, lernt dabei Betriebssystem und wichtige Programmmechanismen auf neue Weise kennen.

vorlesen Druckansicht
Buchkritik: Building a Debugger
Lesezeit: 2 Min.
Von
  • Maik Schmidt

Sy Brand nutzt C++17, um einen Debugger für Linux-Systeme auf x64-CPUs zu implementieren. Die Kommandozeilenschnittstelle, die er seinem Werk spendiert, ähnelt denen des freien GNU-Debuggers (GDB) und des in der Apple-Welt verbreiteten quelloffenen LLDB. Entwickler sind allerdings nicht an dieses Interface gebunden, sondern können den hausgemachten Debugger auch als Bibliothek in eigene Projekte einbetten. Wer dem Buch folgen will, braucht gute C++-Kenntnisse. Moderne Eigenschaften der Sprache erläutert Brand in separaten Abschnitten.

Den Kern des Debuggers bildet die ptrace-Funktion. Sie dient nicht nur dazu, Register aller Art zu lesen und zu schreiben, sondern kann auch Hard- und Software-Breakpoints verwalten sowie Prozesse schrittweise ausfĂĽhren. Mit ihrer Hilfe baut Brand eine erstaunliche Menge an Funktionen ein, etwa Watchpoints zur Ăśberwachung von Zugriffen auf bestimmte Speicheradressen.

Mehr Buchrezensionen

Wer statt nackter Adressangaben Symbole aus dem Quelltext des zu inspizierenden Prozesses verwenden will, kommt nicht umhin, die Formate ELF und DWARF zu verstehen und zu verarbeiten. Während ELF die Struktur eines ausführbaren Linux-Programms definiert, repräsentiert DWARF Debug-Informationen, die unter anderem Maschinencode-Anweisungen den dazugehörigen Quelltextzeilen zuordnen. Passende Parser ermöglichen es dann, Haltepunkte auf Quelltextebene zu definieren und ein Programm schrittweise auszuführen. Für jemanden, der das Buch bis zur Hälfte durchgearbeitet hat, fühlt sich der entstehende Debugger bereits wie ein echtes Werkzeug an.

Sy Brand ergänzt anschließend aber noch viele weitere Funktionen. Diese dienen etwa dazu, Prozesse zu inspizieren, die statische oder dynamische Bibliotheken verwenden. Backtraces helfen zu verstehen, über welche Wege ein Programm zu einer bestimmten Anweisung gelangt ist. Den Schluss bilden Funktionen zur Auswertung von Variablen und komplexen Ausdrücken.

In leicht verständlichem Englisch, mit viel Witz und höchst professionellem C++-Code samt etlichen automatischen Tests, die diesen absichern, vermittelt das Buch eine Unmenge an Wissen über Debugger und über Linux-Prozesse im Allgemeinen.

Mehr Infos
Buchcover – Building a Debugger

Sy Brand

Building a Debugger

Write a Native x64 Debugger From Scratch

  • No Starch Press, San Francisco 2025
  • ISBN 978-1718504080
  • 744 Seiten, 39–64 €
  • (Epub-/PDF-/Kindle-E-Book: 29–55 €)

Videos by heise

(psz)