Ein Debugger (von engl. bug) ist ein Werkzeug zum Auffinden, Diagnostizieren und Beheben von Fehlern in Hardware und Software. Ein Debugger ermöglicht in der Regel eine Ablaufverfolgung des zu untersuchenden Programmes in einzelnen Schritten oder zwischen definierten Haltepunkten (Breakpoints). Ist ein Programm auf diese Weise angehalten, kann der Entwickler die Inhalte von Prozessorregistern und Variablen einsehen, verändern oder sich den Verlauf der Funktionsaufrufe bis zum Breakpoint ansehen (callstack). Moderne Debugger (bei kompilierten Sprachen, z.B. C/C++) haben die Möglichkeit, Änderungen am Quelltext on the fly zu übersetzen und mit diesen Änderungen die Programmausführung fortzusetzen. Diese Technik wird auch als just in time debugging bezeichnet. Ein Debugger ist oft Bestandteil einer Programm-Entwicklungsumgebung.
Bei der Fehlersuche mit einem Debugger spricht man auch von Debuggen. Der Wortbestandteil Bug für "Programmierfehler" wurde von der Computerpionierin Grace Hopper geprägt. Mit Bugfix (engl. fix für reparieren, ausbessern) wird die Behebung eines Programmfehlers bezeichnet.
Darüberhinaus kann ein Debugger auch dazu eingesetzt werden, um mit der Ablaufverfolgung und dem Untersuchen von Variablen Fremdprogramme besser und schneller zu verstehen.
In objektorientierten Laufzeitsystemen, bei der parallelen Programmierung oder in verteilten Systemen ist es sehr schwierig oder in der Praxis sogar unmöglich, eine genaue Programmabfolge zu definieren. Einige Entwicklungssysteme verzichten daher auf den Einsatz von Laufzeit-Debuggern, lassen aber in der Regel die Definition von Haltepunkten zu, an dem der Zustand aller Variablen nach dem Programmstopp analysiert werden kann. Auch bei der Ausnahmebehandlung, also nach Programmunterbrechungen, die zum Beispiel durch einen Fehler erzwungen werden, werden sogenannte Post-Mortem-Debugger in diesem Sinne eingesetzt.
Inhaltsverzeichnis |