www.wikidata.de-de.nina.az
Dieser Artikel behandelt das Programm zum Auffinden von Fehlern Zur Tatigkeit siehe Debuggen Ein Debugger von engl de Prafix dt ent aus im Sinne von entfernen und engl bug im Sinne von Programmfehler ist ein Werkzeug zum Diagnostizieren und Auffinden von Fehlern in Computersystemen dabei vor allem in Programmen aber auch in der fur die Ausfuhrung benotigten Hardware Debugging bezeichnet die Tatigkeit solche Fehler zu diagnostizieren und aufzufinden sei es unter Verwendung eines Debuggers oder anderer Methoden Inhaltsverzeichnis 1 Namensherkunft 2 Funktionen eines Debuggers 3 Haltepunkte 4 Zur Fehlersuche verwendete Werkzeuge 4 1 Software 4 2 Hardware 5 Siehe auch 6 Literatur 7 Weblinks 8 EinzelnachweiseNamensherkunft Bearbeiten nbsp Logbuch Seite des Mark II Aiken Relay Calculator mit dem ersten Bug 1947 Der Begriff debugging zu deutsch entwanzen wird haufig Grace Hopper zugeschrieben eine Legende die sie selber gerne erzahlte welche allerdings nicht ganz korrekt ist 1947 hatte wahrend der Arbeiten am Mark II eine Motte fur den Ausfall eines Relais dieses Computers gesorgt Das Team von Grace Hopper fand die Motte und klebte sie in das Logbuch zusammen mit dem Satz First actual case of bug being found Das erste Mal dass tatsachlich ein Bug gefunden wurde Darauf hin soll sich die Bezeichnung debugging fur Fehlersuche im Team eingeburgert haben Der Begriff Bug fur Insekt Kafer Schadling war allerdings im Englischen unter Ingenieuren bereits seit dem 19 Jahrhundert als Bezeichnung fur Fehlfunktionen in Gebrauch und wurde entsprechend bereits 1937 im Webster s New International Dictionary als Slang erwahnt 1 Mit Bugfix engl fix fur reparieren ausbessern wird die Behebung eines Programmfehlers bezeichnet Funktionen eines Debuggers Bearbeiten nbsp Bildschirmfoto eines Debuggersdie Steuerung des Programmablaufs insbesondere durch Haltepunkte und die Einzelschritt Verarbeitung von Befehlen das Inspizieren von Daten z B die Register den aktuellen Programmcode als Assembler oder Hochsprachenquelltext den allgemeinen Daten in festen und fluchtigen Speichern der Erzeugung von fortgeschrittenen Daten Interpretationen etwa durch eine Aufrufstapel Funktionalitat oder das Anzeigen von Ein Ausgabe Registern Tabellen und Hochsprachen Strukturen das Modifizieren von Speichern z B des Hauptspeichers der externen Ein Ausgabe Zustande und der Register des ProzessorkernsJe nach Debugger und Beschaffenheit der Hardware ist es auch moglich Ruckmeldungen und Fehlerzustande Exceptions des Zielsystems aufzufangen Hier sind vor allem Speicherzugriffsfehler interessant ungultige Opcodes und Befehlsfolgen bei denen Eingangs oder Ausgangsgrossen fraglich sind etwa eine versuchte Division durch Null Man unterscheidet grundsatzlich zwischen Remote Debugging von entfernten Systemen und Debugging das innerhalb des zu untersuchenden Prozessorsystems mit Bord Mitteln vorgenommen wird Eine Spezialversion ist das Remote Debugging mittels einer Simulation des Zielsystems durch eine Prozessor Simulation und weitere Elemente Das Debuggen einer virtuellen Maschine stellt eine Zwischenform zwischen den beiden Typen dar wobei die virtuelle Maschine prinzipiell sowohl den Charakter einer lokalen Anwendung wie auch eines eigenstandigen Systems hat Die Uberwindung der Prozessor Architektur stellt zumindest grundsatzlich einen gewissen Aufwand dar Je nach Konzeption sind beim Debugging sogar taktgenaue Bestimmungen des Laufzeitverhaltens moglich wobei z B eine Simulation dabei nicht zwangsweise in Echtzeit ablaufen muss Bei Simulationen von Halbleitern der Kategorie ASIC FPGA oder PLC sind sowohl Hardware wie auch Software Simulationen gangige Hilfsmittel die uber einen entsprechend speziellen Debugger fur den Entwickler zuganglich sind Einfache Fehlersuche auf Assembler Ebene ist bei einem dafur ausgelegten System jederzeit moglich Manche Hochsprachen wie etwa Skripte oder diverse BASIC Varianten lassen sich dagegen oft nur zeilenbasiert auf Quelltextebene untersuchen Erweiterte Funktionalitaten z B das Auflosen von Symbolen Strukturen und Funktionsnamen werden mit dem Vorhandensein von Symbol Informationen in einer speziellen Datei oder eingebettet in einem Binarprogramm z B DWARF Debug Information moglich Fortgeschrittene Debugger und Entwicklungssysteme konnen weiterhin z B im laufenden Betrieb Daten mitschneiden Leistungsanalysen anfertigen und nebenlaufige Vorgange visualisieren Ein Debugger ist systematisch am ehesten vergleichbar mit dem was in der Elektrotechnik und Elektronik durch die typischen Messgerate und Hilfsmittel z B einen Logik Tester ein Multimeter ein Oszilloskop oder einen Signalgenerator an Moglichkeiten fur die Inbetriebnahme und Uberwachung von entsprechenden Systemen zur Verfugung steht Moderne Debugger haben die Moglichkeit Anderungen am Quelltext wahrend der Programmausfuhrung direkt zu ubersetzen und anschliessend das Programm fortzusetzen Diese Technik wird auch als just in time debugging bezeichnet Ein Debugger ist oft Bestandteil einer Programm Entwicklungsumgebung Daruber hinaus kann ein Debugger beim Reverse Engineering 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 unmoglich 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 Haltepunkte BearbeitenDie wichtigste Fahigkeit eines Debuggers besteht darin Haltepunkte zu setzen Diese ermoglichen es an beliebiger Stelle eines Programms dessen Ausfuhrung zu unterbrechen und so die Untersuchung der Register und des Speichers zu ermoglichen Am haufigsten werden Software Haltepunkte genutzt welche ein Byte im zu untersuchenden Programm temporar verandern Dieses Byte ist die Anweisung einen Breakpoint Interrupt auszulosen die Programmausfuhrung beim veranderten Byte anzuhalten Diese Moglichkeit beinhaltet allerdings die Einschrankung dass das zu untersuchende Programm sich selbst nicht auf Integritat prufen darf zum Beispiel durch Uberprufung einer Prufsumme siehe dazu auch Zyklische Redundanzprufung Diese Schwache der weichen Haltepunkte nutzen Malwareprogrammierer zum Beispiel aus um die Analyse eines Schadprogramms zu erschweren oder sogar zu verhindern Dieser Einschrankung unterliegen die Hardware Haltepunkte nicht da diese das zu untersuchende Programm nicht verandern Hardware Haltepunkte sind direkt im Prozessor realisiert allerdings besitzt dieser nur begrenzte Ressourcen dafur so dass nur eine begrenzte Anzahl dieser Haltepunkte zur Verfugung steht Viele Debugger erlauben es dem Programmierer bedingte Haltepunkte zu setzen Dabei gibt der Programmierer neben der Anweisung wo die Programmausfuhrung angehalten werden soll den Befehl fur einen booleschen Ausdruck an Der Debugger unterbricht die Programmausfuhrung nur dann wenn die angegebene Codezeile erreicht wurde und gleichzeitig der boolesche Ausdruck wahr ist Damit der Debugger testen kann ob der boolesche Ausdruck wahr ist muss dieser allerdings die Programmausfuhrung temporar unterbrechen und den booleschen Ausdruck uberprufen worauf der Debugger dann entweder die Programmausfuhrung fortsetzt oder das Programm im unterbrochenen Zustand lasst Zur Fehlersuche verwendete Werkzeuge BearbeitenSoftware Bearbeiten Compuware Xpediter z OS Debugger DDT DEC CP M Debugger DEBUG EXE MS DOS Debugger gdb der GNU Debugger ein Unix Werkzeug HiTOP Debugger IDE von Hitex Development Tools IBM Debug Tool z OS Debugger mit IDE iSYSTEM BlueBox mit winIDEA In circuit debugger fur Embedded Systeme Lauterbach TRACE32 In circuit debugger fur Embedded Systeme SEGGER Ozone Debugger fur Embedded Systeme PLS Universal Debug Engine UDE Multicore Debugger und Trace Tool fur eingebettete Systeme ltrace zeigt dynamische Bibliotheks und Systemaufrufe in Linux an Microsoft Visual Studio Entwicklungsumgebung integrierter Debugger Remote Debugger OllyDbg Debugger mit grafischer Oberflache GUI fur Windows Betriebssysteme ROMWack Bestandteil des ROMs im Amiga SoftICE Kernel Modus Debugger fur DOS und Windows bis zu Windows XP 1987 2000 strace Linux truss Solaris DTrace macOS zeigt Systemaufrufe an Interactive Disassembler IDA Disassembler fur viele Rechner Architekturen enthalt u a Debugger fur die Arm MIPS m68k und x86 x64 Architektur TOD ein sog Omniscient Debugger fur Java Turbo Debugger von Borland valgrind zum Debuggen und Profilen von Linux Programmen verschiedener Architekturen Visual DuxDebugger Debugger Disassembler fur Windows 64 bit WinDbg KD CDB NTSD Windows Debugger fur x86 Itanium und x64 Systeme Bestandteil der Debugging Tools for Windows W32DASM Debugger und Disassembler x64dbg Debugger mit GUI fur Windows BetriebssystemeHardware Bearbeiten JTAG Logikanalysator In Circuit Emulator ICE Siehe auch BearbeitenSoftwaretest Delta Debugging DisassemblerLiteratur BearbeitenDavid 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 Thorsten Grotker Ulrich Holtmann Holger Keding Markus Wloka The Developer s Guide to Debugging 2 Ausgabe CreateSpace Independent Publ 2012 ISBN 978 1 4701 8552 7 John Robbis Microsoft NET 2 0 Anwendungen debuggen Praktische mit Visual Studio 2005 deutsch MicrosoftPress Deutschland 2007 ISBN 978 3 86645 408 8Weblinks Bearbeiten nbsp Wiktionary Debugger Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Why Programs Fail Webseite zum Buch Why Programs Fail von A Zeller mit Programmbeispielen und Lehrmaterial 600 Folien Einzelnachweise Bearbeiten BYTE com Abgerufen am 14 Oktober 2019 Abgerufen von https de wikipedia org w index php title Debugger amp oldid 238221861