Definition „Debugging Tool“

Was ist ein Debugger?

| Autor / Redakteur: chrissikraus / Stephan Augsten

Gerade bei großen Software-Projekten ist ein Debugger nahezu unabdingbar, wenn es um das Auffinden und Bereinigen von Programmierfehlern geht.
Gerade bei großen Software-Projekten ist ein Debugger nahezu unabdingbar, wenn es um das Auffinden und Bereinigen von Programmierfehlern geht. (© ribkhan - stock.adobe.com)

Der Debugger ist aus der modernen Software-Entwicklung nicht mehr wegzudenken: Er hilft dem Programmierer bei der Fehlersuche im Quellcode und erlaubt es, das Programm zur Laufzeit Schritt für Schritt zu untersuchen und dessen Ablauf zu steuern.

Selbst bei größter Sorgfalt schleichen sich beim Programmieren immer wieder Fehler in den Code ein. Mal handelt es sich um einen ungültigen Speicherzugriff, mal stimmt der Inhalt einer Variable zu einem bestimmten Zeitpunkt nicht. In einem kleinen, überschaubaren Projekt und mit genug Zeit lassen sich Bugs eventuell noch von Hand finden.

Ein komplexes Softwareprojekt kann allerdings weit mehr als eine Million Zeilen Code erreichen – der Gedanke, hier jeden noch so unscheinbaren Bug ohne maschinelle Unterstützung zu entdecken, grenzt an Wahnsinn. Erfreulicherweise gibt es ein Hilfsmittel, das Entwickler bei der Fehlersuche unterstützt: Mit dem Debugger lässt sich ein Projekt während der Laufzeit detailliert steuern und inspizieren.

Debugger unterstützen bei der Fehlersuche

In der Software-Entwicklung ist der Debugger ein essenzielles Werkzeug, das bei der Diagnose und Behebung solcher Software- und Programmierfehler hilft. Der Begriff leitet sich folgerichtig vom englischen Wort „Bug“ für Software-Fehler ab.

Sehr allgemein gesagt ist ein Debugger ein Werkzeug, das sich in einen laufenden Prozess einklinkt. So kann es beispielsweise bestimmte Vorgänge im Inneren des beobachten, zum Beispiel die Inhalte von Variablen, Speichern und Registern. Zudem können Debugger Fehlermeldungen während der Laufzeit abfangen und dem Entwickler mitteilen.

Ohne den Debugger wüsste man lediglich, dass etwas nicht so läuft wie es sollte. Bestenfalls hätte man eine dunkle Ahnung, was das Problem verursachen könnte, und könnte die entsprechenden Stellen untersuchen. Schlimmstenfalls wurde eine Klammer falsch gesetzt oder der falsche logische Operator verwendet und man müsste Stunden damit verbringen, den Code akribisch Zeichen für Zeichen zu untersuchen.

Moderne Debugger finden nicht nur Fehler im Code, sondern informieren den Entwickler auch im Detail über die Art des Fehlers und – wenn möglich – den Ort des Geschehens. Man weiß also in den meisten Fällen relativ genau, in welcher Zeile welches Problem auftritt und kann gezielt nachforschen.

Schritt für Schritt durch den Code

Eine weitere Funktion von Debuggern ist das Steuern des Programmablaufs. Bevor der Entwickler mit dem Debugging beginnt, kann er Stellen im Code definieren, an denen die Ausführung der Software pausieren soll: Breakpoints oder Haltepunkte.

Einerseits kann der Entwickler nun den genauen Zustand der Software zu diesem Zeitpunkt untersuchen. Er erhält zum Beispiel Einblick in alle Variablen und kann so prüfen, ob die erwarteten Werte vorliegen. Andererseits kann er das Programm ab dem Haltepunkt Schritt für Schritt abspielen und so exakt beobachten, was geschieht. Es wird ersichtlich, wie und wann sich die Werte einzelner Variablen verändern.

Darüber hinaus lässt sich live mitverfolgen, wie genau der Code durchlaufen wird, also in welcher Reihenfolge die einzelnen Anweisungen aufgerufen und verarbeitet werden. Diese detaillierte Analyse trägt dazu bei, die Vorgänge besser zu verstehen und so selbst komplexe Fehler zu lösen. Teils ist es auch möglich, zu vorherigen Schritten zurückzuspringen und das Programm von dort aus erneut ablaufen zu lassen.

Bedingte Haltepunkte für präzise Analysen

Haltepunkte müssen nicht allgemeingültig sein. Viele Debugger bieten die Möglichkeit, einen Breakpoint mit Bedingungen auszustatten. So kann erreicht werden, dass das Programm nur in einer vordefinierten Situation anhält. Beispiel: Erst beim 32. Durchlauf einer Schleife tritt ein Fehler auf; statt also 31 ereignislose Wiederholungen schrittweise zu durchlaufen, lässt man das Programm direkt vor der sehenswerten Iteration anhalten und kann umgehend in den Fehlerfall einsteigen.

Software zur Laufzeit manipulieren

Außerdem können viele Debugger im laufenden Betrieb bestimmte Werte vortäuschen, um das Verhalten des Programms beispielsweise mit veränderten Variablen beobachten zu können. Ebenso gibt es Debugger, die Änderungen am Quellcode während der Laufzeit verarbeiten können. Das bedeutet, dass das Programm nicht angehalten und neu gestartet werden muss, um die Auswirkung einer veränderten Zeile Code zu beobachten. Stattdessen kann der Programmablauf per Debugger pausiert werden, während man die Änderungen vornimmt.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Was ist Delphi?

Definition „Delphi (IDE)“

Was ist Delphi?

Die Entwicklungsumgebung Delphi wurde vom Unternehmen Borland eigens für die Programmiersprache Object Pascal entwickelt. Die ursprünglich vor allem für akademische Zwecke entwickelte Sprache Pascal wurde dank Delphi in die Praxis und die Moderne übersetzt. lesen

Entwicklerportal für Fuchsia-OS

Android-Nachfolger nimmt Gestalt an

Entwicklerportal für Fuchsia-OS

Google hat ein Entwicklerportal für Fuchsia OS gestartet. Das Betriebssystem, das als potentieller Nachfolger für den derzeitigen Smartphone-Platzhirsch Android gehandelt wird, basiert nicht auf Linux, sondern einem eigenen Mikrokernel namens Zircon. lesen

Grundlagen zu C-Sharp und Visual Studio

Programmieren mit C#, Teil 1

Grundlagen zu C-Sharp und Visual Studio

C# ist als objektorientierte Programmiersprache direkt in Microsofts-Entwicklungsumgebung Visual Studio integriert. Microsoft stellt dazu auch eine kostenlose Community Edition zur Verfügung. Wir geben einen ersten Überblick. lesen

Paketverwaltung in Fedora Silverblue Toolbox

Flatpak, rpm-ostree und Container-basiertes DNF

Paketverwaltung in Fedora Silverblue Toolbox

Zeitgleich zu Fedora 30 hat das Team Silverblue eine finale Variante der Workstation vorgestellt. Der DNF-Paketmanager weicht rpm-ostree und Flatpak, dank Toolbox-Container lässt er sich aber weiter nutzen. Wir zeigen Schritt für Schritt die Nutzung der Toolbox und die beiden anderen Wege. lesen

Microsoft macht IntelliCode verfügbar

Preview 3 von Visual Studio 2019

Microsoft macht IntelliCode verfügbar

Die dritte Preview-Version von Visual Studio 2019 16.1 ist erhältlich. Die Vorschau enthält eine Reihe von Neuerungen, darunter standardmäßige IntelliCode-Unterstützung, C++-Verbesserungen zur Produktivitätssteigerung und .NET-Tooling-Updates. lesen

App-Entwicklung für Philips Hue

Smart-Home-API aktivieren und ansprechen

App-Entwicklung für Philips Hue

Die Smart-Home-Lösung Philips Hue ist einsteigerfreundlich und birgt Chancen für Entwickler: Hue bietet eine simple API – und der Hersteller weist eindeutig darauf hin, dass Dritte eigene Hue-Apps entwickeln und auch kommerziell verwerten dürfen. lesen

PHP-Tools für Entwickler

Programmieren mit PHP, Teil 9

PHP-Tools für Entwickler

Für PHP gibt es eine Reihe nützlicher Werkzeuge, mit denen Entwickler einfacher Programme schreiben und mit PHP arbeiten können. Neben Entwicklungsumgebungen und Editoren stellen wir in diesem Beitrag auch andere Zusatztools vor. lesen

VS-Code und IntelliJ-Plug-in von Google

Cloud-Native-Development mit Cloud Code

VS-Code und IntelliJ-Plug-in von Google

Google hat mit Cloud Code eine Reihe neuer Plug-ins für IntelliJ- und Visual Studio Code für die Entwicklung Cloud-nativer Anwendungen bereitgestellt. In der ersten Version lag der Fokus auf Applikationen, die auf Kubernetes laufen, einschließlich der Google Kubernetes Engine. lesen

Time Travel Debugging für Web Apps

Preview in Visual Studio Enterprise 2019

Time Travel Debugging für Web Apps

Microsoft spendiert Visual Studio Enterprise 2019 eine Preview auf ein „Zeitreise“-Feature: Mittels Time Travel Debugging, kurz TTD, lassen sich innerhalb einer Azure Virtual Machine laufende Webanwendungen aufzeichnen. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45385542 / Definitionen)