Debugger

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

Zur Fehlersuche verwendete Werkzeuge

  • Software:
    • gdb – der GNU-Debugger, ein Unix-Werkzeug
    • ddd – eine grafische Oberfläche zum gdb
    • cgdb - Ein curses basiertes Frontend zu gdb
    • ltrace – zeigt dynamische Bibliotheksaufrufe an
    • strace (Linux), truss (Solaris) – zeigt Systemaufrufe an
    • valgrind – zum Debuggen und Profilen von x86-Linux-Programmen
    • SoftICE – Leistungsfähiger maschinennaher Debugger für x86-Systeme
    • IDADisassembler für viele Rechner-Architekturen; enthält auch einen Debugger für die x86-Architektur.
    • OllyDbg – Debugger mit GUI.
    • W32DASM – Debugger und Disassembler.
  • Hardware:

Siehe auch

Literatur

  • David J. Agans: Debugging: The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems, AMACOM, 2002. ISBN 0-8144-7168-4
  • Ann R. Ford, Toby J. Teorey: Practical Debugging in C++, Prentice Hall, 2002. ISBN 0-13-065394-2
  • Matthew A. Telles, Yuan Hsieh, Matt Telles: The Science of Debugging, The Coriolis Group, 2001. ISBN 1-57610-917-8
  • Andreas Zeller: Why Programs Fail: A Guide to Systematic Debugging, Dpunkt Verlag, 2005. ISBN 3-89864-279-8

Weblinks

  • Why Programs Fail - Webseite zum Buch Why Programs Fail von A. Zeller, mit Programmbeispielen und Lehrmaterial (600 Folien!)
Quelle:
Artikel Debugger aus der freien Enzyklopädie Wikipedia mit dieser Versionsgeschichte
Lizenz:
Kategorien:
Bookmarks
delicious wong linkarena google
Sponsoren