Ein Debugger (von engl. Bug im Sinne von Programmfehlern ) ist ein Werkzeug zum diagnostizieren und auffinden von Fehlern in Computersystemen , dabei vor Allem in Anwendungen , aber in dem für Auch Ausführung benötigten sterben Hardware .
Namensherkunft
Der Begriff „Fehlersuche“ (zu deutsch entwanzen ) basiert auf der von Grace Hopper eingeführten Bezeichnung für Fehler in Computersysteme . 1947 had während der Arbeiten an Mark II Eine Motte für den Ausfall Eines Relais Computer gesorgt of this. Grace Hopper Hut Form (tote) Motte in dem Logbuch geklebt und mit DM Satz „Erster konkreter Fall von Fehlern gefunden werden.“ ( „Das erste Mal, Dass eine tatsächlich Bug gefunden Wird.“) Kommentiert. Der Begriff „Bug“ (für Insektizide, Käfer, Schädling) Krieg im Englischen unter Ingenieure BEREITS seit Drücker Zeit als Bezeichnung für Fehlfunktionen in Gebrauch. Mit Bugfix (engl. Fix für repariert, ausbessern) Wird sterben Behebung Eines Programmfehler bezeichnet.
Die Funktion ist Debugger
- die Steuerung des Programmablaufs, besonders durch Haltepunkte und Einzelschritte
- das inspiziert von Daten, z. B. stirbt Register, die Programm – Code current als Assembler oder Hochsprachenquelltext, die Allgemeinen Daten in Partei und Flucht Speichern , wo Erzeugung einge von Fortgeschrittenen Daten-Interpretation ETWA Durch Eine Aufrufstapel -Funktionalität oder das Anzeigen von Ein- / Ausgabe-Direktor Stern, Tisch und Hochsprachen- die Struktur
- Das Modifizieren von Speichern, z. B. des Hauptspeichers, Externalists Ein- / Ausgabe-Zustände und der Register of Prozessorkerns
Je nach Debugger und beschaffenheit wo Hardware ist es Auch Möglich, Rückmeldungen und Fehlerzustände ( Ausnahmen ) Dec Zielsystem aufzufangen. Hier freuen wir uns auf interessante, jugendliche Opcodes und Befehlsfolgen, durch Eingangs- oder Ausgangsgrößen fraglich, und durch unsere heftige Division durch Null.
Sie können nach Remote-Debugging-Systemen, -Systemen und Debugging sowie nach erfolglosen Prozessorsystemen mit Bord-Mitteln-Vorteilen suchen. Eine Spezialversion ist das Remote-Debugging. Das Debuggen einer virtuellen MaschineStellt Eine Zwischenform Zwischen der Beide Typ dar, stirbt Wobei virtuelle Maschine prinzipiell Sowohl den Charakter Eines Veranstaltungsort anwendung Wie Auch Einen eigenständigen Systeme Hass. Die Überwindung wo Prozessor-Architektur Stellt zumindest Grundsätzlich EINEN Gewiss Aufwand dar. Je nach Konzeption Sind beim Ausprüfen Sogara taktgenaue Determination of Laufzeitverhaltens Möglich, Wobei z. B. Eine Simulation dabei nicht in Echtzeit zwangsweise Ablauf Muss. Bei Simulation von Halbleitern der Kategorie ASIC , FPGA oder SPS Ist Sowohl Hardware- Wie Auch Software Simulationszeiten Hilfsmittel, über EINE entsprechend Spezielles Debugger Für den Entwickler zugänglich Ist sterben.
Einfache Fehlersuche auf Assembler-Ebene ist bei Einer Dafür – System jederzeit möglich ausgelegten. Manche Hochsprachen, Wie ETWA Skript oder verschiedene BASIC – Variante lassen sie dagegen oft nur zeilenbasiert auf Quelltextebene untersuchen. Erweiterte Funktionalitäten, z. B. das von auflösen Symbole, Struktur und Funktionsnamen Werden with the Vorhandensein von Symbol-Informationen in Einem Speziellen Datei oder Eingebettet in Einem Binärprogramm (z. B. ZWERG-Debug Information) Möglich. Fortgeschrittene Debugger- und Entwicklungssysteme Können weiterhin z. B. im laufenden Betrieb Daten Mitschneiden, Leistungsanalysen anfertigen und nebenläufigeVorgänge und visualisieren.
Ein Debugger ist systematisch am ehesten Vergleichbar mit dm, war in der Elektrotechnik und Elektronik Durch Die Typische MESSGERäT und Hilfsmittel, z. B. EINES Logik-Tester, ein Multimeter, ein Oszilloskop oder EIN Signalgenerator, ein möglichkeit für Inbetriebnahme und Überwachung von Systemen zur verfügung entsprechend sterben STAND.
Der moderne Debugger hat die Möglichkeit, die Programmausführung direkt zu übersetzen und anschließend zu programmieren. Diese Technik wird auch als Just-in-Time-Debugging bezeichnet. Ein Debugger ist oft Bestandteil einer Programm Entwicklungsumgebung .
Über Hinaus kann auch Debugger Beim Reverse Engineering auch mit eingesetzt werden, mit Ablaufverfolgung und Untersuchen von Variabelen Fremdprogrammer besser und schneller zu verstehen.
In objektorientierten Laufzeitsystemen , bei dem Parallel – Programmierung oder in verteilten Systemen ist es sehr Schwierig oder in der Praxis Sogara Unmöglich, bestimmt Ein genau zu Programmabfolge. Einige Entwicklungssysteme verzichten DAHER auf den Einsatz von Laufzeit -Debuggern, lassen aber in der Regel Die Definition von Haltepunkten zu, einer ihnen dort Zustand sehr Die Variable nach DM Programm Top Analysiert Werden Kann. Auch bei der Ausnahmebehandlung , auch nach Programmunterbrechungen, sterben zum beispiel Durch EINEN Fehler erzwungen Wird, Werden sogenannter Post-Mortem -Debugger in diesem Sinne eingesetzt.
Haltepunte
Die schwerste Fähigkeit eines Debuggers ist, Haltepunkte zu setzen. Das sind die Gesetze und Gläubigen an den Programmen, die unterbrechen sollen und so auf der Tagesordnung des Registers und der Speichers stehen.
Am häufigsten wurde Software-Haltepunkt genutzt, welte ein Byte im zu untersuchenenden Programm temporär verändern. Dieses Byte ist die Anweisung, einen Breakpoint Interrupt auszulösen, die Programmausführung beim veranderen Byte anzuhalten.
This möglichkeit Knochen limped allerdings sterben Einschränkung, Dass das zu unter suchlike Ende Programm sich selbst nicht auf Integrität Prufer Darf (zum beispiel Durch Überprüfung Wacholder Prüfsumme , siehe dazu Auch Zyklische Redundanzprüfung ). This Schwächen wo Weich Haltepunkte Nutzen Malwareprogrammierer zum beispiel aus, um sterben Analyse Eines Schadprogramms zu erschweren oder Sogara zu verhindern.
Diese Hardware beschränkt sich auf Hardware Haltepunkte Sind direkt im Prozessor Realisiert, allerdings nur Besitzt of this Begrenzt Ressourcen Dafür, so that Nur eine Begrenzt Anzahl of this Haltepunkte zur verfügung STAND.
Viele Debugger erlauben es dem Programmierer, das Haltepun zu zuzen. Dabei gibt der Programmierer neben der Anweisung, wo die Programmaführung angehalten werden soll, den Befehl für einen booleschen Ausdruck an. Der Debugger im Glossar erklärt unterbricht die Programmausführung nur dann, wenn de selten Codezeil erreicht wird und gleichzeitig der boolesche Ausdruck wahr ist.
DAMIT der Debugger-Test Kann, ob die Boolesche Ausdruck wahr ist, sterben Muss of this allerdings Programmausführung tempore unterbrechen und die booleschen Ausdruck opinions, Worauf der Debugger Dann Entweder stirbt Programmausführung fortsetzt, oder das Programm im Zustand unterbrochen Läßt.
Zur Fehlersuche Verwendete Werkzeuge
Software
- Compuware Xpediter – z / os Debugger
- DDT – DEC / CP / M Debugger
- DEBUG.EXE – MS-DOS- Debugger
- gdb – dort GNU-Debugger, ein Unix-Werkzeug
- HiTOP – Debugger / IDE von Hitex Entwicklungswerkzeugen
- IBM Debug Tool – z / OS Debugger und IDE
- iSYSTEM – In Schaltungsdebugger für Embedded Systems
- Lauterbach TRACE32 – Im Schaltungsdebugger für Embedded Systeme
- ltrace – sucht dynamische Bibliotheken und Systemaufrufe unter Linux
- Microsoft Visual Studio IDE Integrierter Debugger + Remote Debugger
- OllyDbg – Debugger Meine GUI für Windows Betriebssysteme
- SoftICE – Leistungsfähiger maschinennaher Debugger für x86-Systeme
- Strace ( Linux ), Truss ( Solaris ) – sucht Systemaufrufe an
- Der Interaktive Disassembler – Disassembler für viele Rechner-Architekturen; Enthält auch einen Debugger für die x86-Architektur
- TOD – eine Absaugung. Allwissender Debugger für Java
- Turbo-Debugger von Borland
- valgrind – zum Debuggen und Profil von x86 -Linux-Programmen
- Visual DuxDebugger – Debugger Disassembler für Windows 64-Bit
- WinDbg , KD / CDB, NTSD – Windows -Debugger für x86-, Itanium- und x64-Systeme, File Debugging Tools für Windows
- W32DASM – Debugger und Disassembler
Hardware
- JTAG
- Logikanalysator
- In-Circuit-Emulator (ICE)
Siehe auch
- Software Test
- Delta-Debuggen
- Disassembler
Literatur
- David J. Agans: Debugging: Die neun unentbehrlichen Regeln, um selbst die effizientesten Software- und Hardwareprobleme zu finden , AMACOM, 2002. ISBN 0-8144-7168-4 .
- Ann R. Ford, Toby J. Teorey: Praktisches Debugging in C ++ , Prentice Hall, 2002. ISBN 0-13-065394-2 .
- Matthew A. Telles, Yuan Hsieh, Matt Telles: Die Wissenschaft des Debuggens , The Coriolis Group, 2001. ISBN 1-57610-917-8 .
- Andreas Zeller : Warum Programme scheitern: Ein Leitfaden zum systematischen Debuggen , DPoint Verlag, 2005. ISBN 3-89864-279-8 .
- Thorsten Grötker, Ulrich Holtmann, Holger Keding, Markus Wloka: Der Entwicklerleitfaden für Debugging , 2. Ausgabe, CreateSpace Independent Publ., 2012. ISBN 978-1-4701-8552-7 .
- John Robbis: Microsoft .NET 2.0 Anwendungs-Debugging , Praktisch (…) mit Visual Studio 2005 , deutsch, MicrosoftPress Deutschland, 2007, ISBN 978-3-86645-408-8