Anzeigegulli:Toolbox |
gulli:lexikon » Debugger
gulli:lexikon - Alle Begriffe der Untergrund-SzeneTipp: Benutze die Suche, um weitere Begriffe im gulli:lexikon nachzuschlagen. Ein Debugger (von engl. bug) ist ein Werkzeug zum Diagnostizieren, Auffinden und Beheben von Fehlern in Computersystemen, dabei vor allem in Programmen aber auch in der für die Ausführung benötigten Hardware. Die Funktionen eines Debuggers sind im Wesentlichen:
Je nach Debugger und Beschaffenheit der Hardware ist es auch möglich Rückmeldungen und Fehlerzustände (Exceptions) des Zielsystems auf zu fangen. Hier interessant sind vor allem Speicherzugriffsfehler, ungültige Opcodes und Befehlsfolgen bei denen Eingangs- oder Ausgangsgrößen fraglich sind, etwa eine versuchte Division durch Null. Man unterscheidet grundsätzlich 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 eigenständigen Systems hat. Die Überwindung der Prozessor-Architektur stellt zumindest grundsätzlich einen gewissen Aufwand dar. Je nach Art der Konzeption sind beim Debugging sogar taktgenaue Bestimmungen des Laufzeitverhaltens möglich wobei z.B. eine Simulation hierbei nicht zwangsweise in Echtzeit ablaufen muss. Bei Simulationen von Halbleitern der Kategorie ASIC, FPGA oder PLC sind sowohl Hardware- wie auch Software-Simulationen gängige Hilfsmittel, die über einen entsprechend speziellen Debugger für den Entwickler zugänglich sind. Einfache Fehlersuche auf Assembler-Ebene ist bei einem dafür ausgelegten System jederzeit möglich. Manche Hochsprachen, wie etwa Skripte oder diverse BASIC-Varianten, lassen sich dagegen oft nur zeilenbasiert auf Quelltextebene untersuchen. Erweiterte Funktionalitäten, z. B. das Auflösen von Symbolen, Strukturen und Funktionsnamen werden mit dem Vorhandensein von Symbol-Informationen in einer speziellen Datei oder eingebettet in einem Binärprogramm (z. B. DWARF-Debug-Information) möglich. Fortgeschrittene Debugger- und Entwicklungssysteme können weiterhin z. B. im laufenden Betrieb Daten mitschneiden, Leistungsanalysen anfertigen und nebenläufige Vorgänge visualisieren. Ein Debugger ist systematisch am ehesten vergleichbar zu dem was in der Elektrotechnik und Elektronik durch die typischen Messgeräte und Hilfsmittel, z. B. einen Logik-Tester, ein Multimeter, ein Oszilloskop oder einen Signalgenerator, an Möglichkeiten für die Inbetriebnahme und Überwachung von entsprechenden Systemen zur Verfügung steht. Moderne Debugger haben die Möglichkeit, Änderungen am Quelltext während der Programmausführung direkt zu übersetzen und anschließend das Programm fortzusetzen. Diese Technik wird auch als just in time debugging bezeichnet. Ein Debugger ist oft Bestandteil einer Programm-Entwicklungsumgebung. Bei der Fehlerkorrektur und -lokalisierung 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über 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 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 so genannte Post-Mortem-Debugger in diesem Sinne eingesetzt.
Zur Fehlersuche verwendete Werkzeuge
Siehe auchLiteratur
Weblinks
cs:Debugger da:Debugger en:Debugger eo:Erarserĉilo es:Depurador fi:Debuggeri fr:Débogueur is:Kembiforrit it:Debugger ja:デバッガ nl:Debugger pl:Debuger pt:Depurador ru:Отладчик sv:Avlusare th:ดีบั๊ก uk:Дебагер Dieser Artikel basiert auf dem Artikel Debugger aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar. |
Weitere Tipps |