www.wikidata.de-de.nina.az
Als Debugsymbole werden in der Informatik Informationen bezeichnet die zum Debuggen von ausfuhrbaren Dateien erstellt werden konnen Diese konnen direkt aus dem Quelltext gewonnen werden insbesondere Bezeichner wie z B Variablennamen Namen von Prozeduren und Funktionen o A Inhaltsverzeichnis 1 Problemstellung 2 Losung 2 1 Nachteile 3 Kommerzielle HandhabungProblemstellung BearbeitenBeim Kompilieren des Quelltextes eines Programms in den Maschinencode oder Bytecode gehen Bezeichner teilweise sogar die ursprungliche Programmstruktur verloren z B loop unrolling Bezeichner werden im kompilierten Programm nicht mehr benotigt und wurden daher unnotig Speicher belegen Die Programmstruktur wird von vielen Compilern beim Optimierungsvorgang verandert loop unrolling um bspw bedingte Sprunge zu vermeiden und die Befehlspipeline von modernen Prozessoren zu nutzen oder gar aufgelost und durch andere Konstrukte ersetzt z B Vektorisierung von wiederholten gleichartigen Operationen auf einem Array um SIMD Fahigkeiten zu nutzen Wenn der Compiler also Schleifen im Programmcode durch Maschinenbefehle ersetzt welche iterierte Instruktionen also hintereinander ausgefuhrte Befehle zu einer einzelnen Maschinenspracheninstruktion zusammenfassen wird eine Fehlersuche im Programmfluss schwierig oder gar unmoglich vgl Black Box Die Moglichkeiten des Debuggens von ausfuhrbaren Dateien und Dynamic Link Libraries DLLs auf Maschinencode Ebene beschranken sich dann im Wesentlichen auf die Ausgabe der zugehorigen Assemblerbefehle sowie des aktuellen Verarbeitungsstands Maschinenregister Programmzahler Datenbereichen des Speichers in tabellarischer Form Es ist damit meist schwer den Ablauf eines Programms bei einem Fehler nachzuvollziehen Auch mussen spezielle Kenntnisse uber die Rechnerarchitektur und Assemblersprache vorhanden sein Losung BearbeitenAus diesem Grunde kann der Entwickler den Compiler beim Ubersetzen des Programms anweisen in die Maschinensprache zusatzliche Informationen uber das Programm einzubinden die das Debuggen eines Programms erleichtern und als Debugsymbole oder Symbolinformationen bezeichnet werden Meist unterlasst der Compiler daraufhin umfangreichere Optimierungen Der Begriff Symbol wird in diesem Zusammenhang im Sinne von Bezeichner verwendet Anschliessend kann mittels eines symbolischen Debuggers das Programmgeschehen auf Quellsprachenebene der Programmiersprache verfolgt werden Solche Debuginformationen umfassen unter anderem die Symboltabelle welche Informationen uber Funktionen und globale Variablen die im Programm definiert bzw referenziert sind enthalt und verwaltet Zuordnung zwischen symbolischen Namen und Maschinenadressen Ausserdem lassen sich Ausdrucke in der Quellsprache durch den Debugger auswerten indem zum Beispiel ein Matching zwischen Quellcode und dem korrespondierenden architekturabhangigen Assemblercode erzeugt wird Nachteile Bearbeiten Da die Informationen meist schon beim Ubersetzen des Programms in Maschinensprache mit eingebunden werden sind die resultierenden ausfuhrbaren Dateien erheblich grosser Sie werden in der finalen Version eines Programms wieder entfernt oder konnen als separate Datei abgespeichert werden Ausserdem ermoglichen diese Symboltabellen nach einem Dekompilieren einen sehr viel leichter verstandlichen ruckgewonnenen Quelltext zu erhalten Dies stellt insbesondere fur Firmen einen Nachteil dar deren Quelltext ihrer Software ein Firmengeheimnis bleiben soll siehe Obfuskation Da der Compiler im Allgemeinen die meisten Optimierungen unterlasst wird die Ausfuhrungsgeschwindigkeit mitunter deutlich herabgesetzt Kommerzielle Handhabung BearbeitenEinige Unternehmen stellen zum Zwecke der Fehlersuche in ihren Programmen separate Debugsymbole fur ihre Dateien bereit die auch separat herunterladen werden konnen Microsofts Debugger WinDbg ist zum Beispiel in der Lage Debugsymbole fur Windows DLLs automatisch herunterzuladen sofern der Quellcode nicht verfugbar ist Abgerufen von https de wikipedia org w index php title Debugsymbol amp oldid 195136109