ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 25.05.2000

Diese Seite wurde zuletzt aktualisiert am 25.05.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Teil 1 Teil 3

Zurück...

Der BugTrapper in der Theorie

Mit dem BugTrapper bietet die Firma MuTek ein solches gleichermaßen einfaches wie auch produktives Werkzeug an. Der BugTrapper, der mittlerweile in der Version 3.0 vorliegt, soll dem Entwickler helfen, beim Anwender auftretende Programmfehler zu erkennen und deren Ursache zu bestimmen. Insbesondere bei Fehlern, die einzig und allein im Release-Build bzw. in der EXE-Datei auftreten, die sich nur unter bestimmten Umständen erkennbar zeigen, die ein sporadisches Verhalten an den Tag legen oder deren Reproduktion einen erheblichen Aufwand erfordert, verspricht der BugTrapper Abhilfe. Gleichermaßen eignet sich der BugTrapper für das Debugging von Anwendungen, die sich mit den herkömmlichen Debuggern außerordentlich schwer auf ein Fehlverhalten prüfen lassen. So ist es zwar mit Visual Basic möglich, Anwendungen mit mehreren Programmfäden auf Basis von ActiveX-EXE-Servern zu realisieren, doch das Debugging von Multithread-Anwendungen ist hingegen mit der Visual Basic-Entwicklungsumgebung nicht möglich, da die IDE nur einen Programmfaden zur Verfügung stellt. Fehler, die nur in Multithread-Umgebungen auftreten, lassen sich daher nur schwer lokalisieren. Ein Beispiel hierfür finden Sie in der Microsoft Knowledge Base unter Microsoft Knowledge Base Q186273Q186273. Bei Anwendungen, die ohne eigene Benutzeroberfläche auskommen müssen, wie es der Fall bei Windows NT-Services, MTS-Anwendungen und ActiveX-EXE-Servern ist, leistet der BugTrapper ebenso unverzichtbare Hilfestellung. Schließlich erleichtert der BugTrapper das Debugging von verteilten Anwendungen.

Die Funktionsweise des BugTrappers ähnelt der eines Flugschreibers. Während des Fluges zeichnet ein Flugschreiber sämtliche Daten das Flugzeug betreffend auf. Nach einem Absturz kann der (hoffentlich unbeschädigte) Flugschreiber geborgen und ausgewertet werden. Das Ergebnis dieser Auswertung ermöglicht eine realitätsgetreue Rekonstruktion der letzten Minuten des Fluges vor dem Absturz. Im Falle des BugTrappers nennt sich der Flugschreiber BugTrapper Agent und zeichnet die Ausführung einer Anwendung auf. Bei einem Absturz des Programms schreibt der BugTrapper Agent diese Aufzeichnung in eine Protokolldatei, die in der BugTrapper-Hauptanwendung ausgewertet werden kann. Ähnliche Versuche gab es bereits von anderen Herstellern, indem die betreffende Anwendung mit entsprechenden Protokollanweisungen instrumentiert wurde. Der BugTrapper hingegen bedient sich einer Technologie namens "Online-Hooking", die das Kernstück des BugTrappers darstellt. Die Online-Hooking-Technologie ermöglicht die Instrumentierung des Programmcodes zur Laufzeit. Eine vorhergehende Anpassung des Quellcodes ist nicht erforderlich. Ebenso wenig wird durch den BugTrapper Agent der Programmcode nachhaltig verändert.

Bild 1

Bild 1: Die Benutzeroberfläche des Bugtrapper 3.0

Der BugTrapper präsentiert sich auf den ersten Blick wie ein herkömmlicher Debugger (Bild 1). Die Unterschiede zeigen sich, sobald eine Protokolldatei in den BugTrapper geladen wird. Der BugTrapper zeigt die vollständige Ausführungshistorie der Anwendung bis zu ihrem Absturz an. Es werden nicht nur Funktionsaufrufe angezeigt, sondern auch der Quellcode und die Variablenwerte zu einem bestimmten Zeitpunkt der Ausführung. Wie in der Visual Basic-Entwicklungsumgebung können Sie sich durch den Quellcode bewegen und dabei die Werte von Variablen überwachen. Doch im BugTrapper können Sie sich auch in der Ausführung zurück bewegen, um beispielsweise von der Absturzstelle im Quellcode zu der Ursache für diesen Programmabsturz zu gelangen. Sie können Funktionen überspringen, in sie hineinspringen und wieder aus ihnen herausspringen. Die Richtung spielt dabei keine Rolle. Schließlich können Sie die Aufzeichnung bis zu einer bestimmten Stelle im Quellcode vor- oder eben auch zurückspulen.

Neben der Protokolldatei benötigt der BugTrapper zum einen den Quellcode der betreffenden Anwendung und zum anderen eine PDB-Datei. Bei einer PDB-Datei handelt es sich um eine Symboldatei, die eine Verbindung zwischen dem Quellcode und dem kompilierten Programmcode einer Anwendung herstellt. Die Erzeugung von PDB-Dateien ist Visual C++ und Visual Basic ab Version 5.0 vorbehalten. Bei Visual Basic ist zu beachten, dass die Anwendung zu Native-Code kompiliert werden muss, und dass in den Projekteigenschaften die Option "Debuginformationen für symbolischen Debugger generieren" aktiviert ist. Zwar generieren auch andere Compiler Symboldateien, jedoch variiert das Format dieser Symboldateien von Hersteller zu Hersteller, so dass die Anwendung des BugTrappers auf in Visual C++ oder Visual Basic implementierte Anwendungen beschränkt ist. So ist das Format der Symboldateien von Delphi nicht kompatibel zu dem der PDB-Dateien. Delphi scheidet also aus. Java ist gleichermaßen kein Kandidat für den BugTrapper, denn Java wird bekanntlich zu Bytecode kompiliert.

Ohne den Quellcode kann der BugTrapper nur die Funktionsaufrufe, nicht aber deren Quellcode anzeigen. Fehlt auch die PDB-Datei, ist die Protokolldatei wertlos. Da der BugTrapper Agent weder den Quellcode noch die PDB-Datei für die Aufzeichnung benötigt, ist sichergestellt, dass nur der oder die Entwickler der Anwendung die Aufzeichnung abspielen können. Für die wichtigsten und gebräuchlichsten System-DLLs, unter anderem Shell32.dll, Kernel32.dll und Ole32.dll, stellt der BugTrapper die zugehörigen PDB-Dateien von Haus aus zur Verfügung. Falls fremde DLLs oder OCXe eingesetzt werden und dafür die zugehörigen PDB-Dateien zur Verfügung stehen, können diese in die Aufzeichnung einbezogen werden.

Zusätzlich zu seiner Funktion als Abspielgerät erfüllt der BugTrapper noch eine weitere wichtige Funktion. Er dient gleichermaßen zum Erstellen eines Drehbuches für den BugTrapper Agent. Im Jargon von BugTrapper nennt sich das Drehbuch "Trace Control Info". In einer Trace Control Info-Datei wird festgelegt, welche Anwendungen zu überwachen sind. Außerdem lässt sich die Aufzeichnung auf bestimmte Module der Anwendung, auf relevante Funktionen oder gar auf einzelne Zeilen im Quellcode begrenzen, so dass sich die Performanceeinbußen für die Anwendungen durch den BugTrapper Agent in Grenzen halten. Durch die Begrenzung der Aufzeichnung auf ausgewählte Bestandteile der Anwendung wird zusätzlich die Menge der anfallenden Informationen minimiert. Da die Protokolldatei letztendlich ihren Weg vom Anwender zum Entwickler finden muss, sollte die Größe der Protokolldatei klein gehalten werden, um beispielsweise noch auf Diskette, per Email oder über FTP verschickt werden zu können. Deshalb zeichnet der BugTrapper Agent die Ausführung einer Anwendung in einem Ringpuffer fester Größe auf und schreibt den Inhalt dieses Ringpuffers bei einem Absturz der Anwendung in die Protokolldatei. Folglich gibt eine Protokolldatei nur über die letzten Minuten oder Sekunden einer Anwendung Auskunft, je nach Umfang der Trace Control Info und der festgelegten Größe für den Ringpuffer.

Zu guter letzt kann der BugTrapper auch zum Debugging einer laufenden Anwendung missbraucht werden. Allerdings können Sie weder Haltepunkte setzen noch die Ausführung des Programms anhalten. Stattdessen starten Sie im BugTrapper die zu testende Anwendung oder hängen den BugTrapper an einen bereits laufenden Prozess. Der BugTrapper verhält sich in diesem Fall wie der BugTrapper Agent, d.h. er zeichnet die Ausführung des Programms auf. Die Aufzeichnung kann jederzeit gestoppt und wieder fortgesetzt werden und endet spätestens bei einem Programmabsturz. Anschließend kann die Ausführung des Programms in Ruhe im BugTrapper Schritt für Schritt, vor und zurück verfolgt werden. Anhand der Aufzeichnung kann außerdem bestimmt werden, welche Module, Funktionen und Codestellen tatsächlich von Relevanz sind. Das Ergebnis findet sich in einer Trace Control Info-Datei wieder, während die Aufzeichnung auf Wunsch in einer Protokolldatei abgelegt werden kann. Eine solche Protokolldatei lässt sich beispielsweise an einen Entwicklerkollegen schicken, der seinerseits die Protokolldatei im BugTrapper öffnet und versucht die Fehlerquelle zu lokalisieren. Langwierige Fehlerbeschreibungen und umständliche Reproduktionsversuche gehören mit dem BugTrapper der Vergangenheit an.

Teil 1

Teil 1

 

Teil 3

Teil 3

Markt


MuTek Solutions GmbH
Weitere Nachrichten
MuTek Solutions GmbH - www.mutek-solutions.de

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2018 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer