| Debugging | |||||
|
Beim Debugging wird eine vorhandene Software auf mögliche Fehler untersucht. Aufgrund von Tippfehlern oder typischen menschlichen Fehlern schleichen sich immer wieder Fehler ("Bugs") in den Code ein. Es gibt verschiedene Methoden des Debugging: Debugging-Methoden Man kann das Programm auf Fehler überprüfen indem man es testet. Oft wird vor der Herausgabe einer Software der zukünftige User miteinbezogen. Diese sogenannten Beta-Tester bekommen das Programm kostenlos in der Beta-Version zur Verfügung gestellt um es nach ihren Bedürfnissen anzuwenden. Im Gegenzug soll der Beta-Tester bei Fehlervorkommnissen diese Protokollieren und abschliessend darber berichten oder eine Fehler-Kommunikation mit dem Hersteller zulassen. Grosse Hersteller wie z.B. Microsoft verfügen zu diesem Zweck über eine grosse Fehlerdatenbank. In dieser Fehlerdantenbank werden die Fehler in einer Datenbank aufgezeichnet und nach Typ und Programmabschnitt geordnet. Danach werden sie ausgewertet und in einem Debugging-Prozess behoben. Danach werden Fehlerbehebungskataloge aufgestellt um Fehler die nichts direkt mit Code des Herstellers zu tun haben sondern mit der Kompatibilität zu Fremdherstellern durch Handlungsempfehlungen für den Kunden beheben zu können. In diesem Prozess durchläuft die Software einen Debugging Prozess von der Alpha- zu Beta-Version und eventuell nachfolgenden Release Candidate Stadien. Eine weitere Methode im Debugging Prozess ist der Einsatz einer Debugging-Software. Diese Software spürt automatisch Fehler auf. Damit diese Software im Sinne der Entwickler funktioniert, kann sie getestet werden, in dem in einer zu überprüfenden Software absichtlich Fehler versteckt werden. An dem Prozentsatz der Fehlerbehebungsquote kann man dann erkennen, in wie fern diese Debugger-Software erfolgreich war. Bereiche die vom Debugger untersucht werden sind insbesondere das Überprüfen der Daten wie die Strukturen einer Hochsprache und deren Quelltext sowie von Registern und einer Dateninterpretation, z. B. durch einen Call-Stack. Call-Stack Ein Call-Stack ist eine dynamische Speicherstruktur die Informationen über die aktiven Subroutinen von Programmen speichert. Der Call-Stack wird auch Execution-Stack, Control-Stack, Run-Time-Stack oder Funktions-Stack genannt. Der Call-Stack wir vor allem dafür verwendet um die Kontrolle über das Hauptprogramm zu behalten, wenn die Subroutine die Kontrolle an das Hauptprogramm zurückgibt. Weitere Debugger-Funktionalitäten Neben dem Überprüfen von Daten ist die Aufgabe einers Debuggers das Modifizieren von Speichern und die Überprüfung von Ein-/Ausgabevorgängen und den Registern der Prozessorkerne. Beim Just-in-Time Debugging werden Debugging Prozesse zur Laufzeit des Compilierens und der Programmausführung vorgenommen. Debugger werden auch beim Reverse Engineering-Prozess eingesetzt. Bei diesem Prozess der Wiederherstellung des Quellcodes werden Abläufe und Variablen genau untersucht. Debugging-Werkzeuge Fürs Debugging werden Debugging Werkzeuge eingesetzt. Beispiele hierfür sind Software-Debugger wie Ask-Igor, gdb (GNU-Debugger), OllyDbg oder iSYSTEM (In-Circuit Debugger für Embedded Systems). Hardware-Debugger: JTAG (Joint Test Action Group) oder der Logic-Analyzer. Debugging ist bedeutend, dass Fehler die Software beeinträchtigen können und in bestimmten Systemen auch ernste Konsequenzen nach sich ziehen können. Debugging-Forschung Im deutschsprachigen Raum ist der Forscher Prof. Andreas Zeller (Universität des Saarlandes) führend in der Debugging-Forschung (Andreas Zeller: Why Programs Fail - A Guide to Systematic Debugging). Pachika Pachika (Suaheli für 'Einsetzen' oder 'Reparieren') ist ein Software-Reparatur-Set welches umfangreichen Software-Projekten hinzugefügt wird, um deren Software-Fehler zu erkennen und beseitigen. Pachika wird aktiv, wenn ein Software-Fehler auftritt bzw. das Programm sich aufhängt. Es analysiert den Unterschied zu einem korrekten Ablauf und behebt den Fehler automatisch ohne daß ein Eingreifen eines Entwicklers notwendig ist. In Laborversuchen konnten beispielsweise in Java-Programme mit Millionen von Programmzeilen die entsprechenden Fehler gefunden werden. Pachika ist Teil des DFG Forschungsprojektes 'Autofix' welches auch von der schweizer Hasler Stiftung gefördert wird. Projektpartner ist die ETH Zürich. |
|||||
| Siehe auch: Unterroutine Quellcode Call-Stack Grace-Hopper Paritätsbit | |||||
| Link: http://www.whyprogramsfail.com/slides.php | |||||