en / de
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

Enhanced Debugging mit dem Visual Studio-AddIn OzCode

Mit den in Visual Studio eingebauten Debugging-Möglichkeiten hat die Fehlersuche viel von ihrer Mühsal verloren, zumal sich seit einigen VS Versionen selber Erweiterungen zu den mit Debugging verwendeten Framework-Klassen schreiben lassen. Trotzdem ballt sich in gewissen Situationen mal wieder die Faust im Sack zusammen: «Warum kann man denn hier nicht einfach…?».

Die hier vorgestellte Erweiterung OzCode bietet einen Satz von Goodies, die sich zwar mit gewissem Aufwand auch selbst bewerkstelligen liessen, aber wenn die Projektzeit knapp wird und die Fehlerquote nicht sinken will, hat man ja erst recht keine Zeit für solche Dinge, sondern möchte schnelle Antworten haben. Zusammengefasst bietet OzCode ein Dutzend Funktionen an. Die für mich nützlichsten davon betreffen das Suchen, Durchforsten und Vergleichen von mehreren Instanzen einer Klasse zur Laufzeit.

Die Search Funktion

Mit ihr kann in einer Instanz bzw. in einer Auflistung von Instanzen nach einem beliebigen String gesucht werden, der sowohl in einem Property-Name als auch im Property-Wert vorkommt: Search1

Hier wurde in der Liste imageModes nach ‹Fluoro› gesucht. Im Resultat-Panel erhalte ich einen Filter aller Objekte mit dem gesuchten Kriterium.

Die Reveal Funktion

Wer kennt das nicht: man hat eine Liste von n Instanzen, und da die ToString-Methode nicht überschrieben bzw. keinen eindeutigen Erkennungsstring für die Instanz ausspuckt, sieht man im Debugger halt n mal den .NET-Klassennamen. Sucht man nun in diesem Haufen nach dem Wert einer bestimmten Property, muss man im Extremfall alle n Instanzen im Tree öffnen.

Mit der Reveal-Funktion lassen sich für eine Klasse bequem eine oder mehrere Properties als «Favoriten» markieren, so dass das Resultat genau diese Property-Werte hinter jeder Instanz auflistet:

Reveal1

Das Gute daran ist, dass sich OzCode diese Favoriten merkt, selbst über das Schliessen von Visual Studio hinaus, so dass nicht bei jeder Debugging-Session von vorne begonnen werden muss. Des weiteren stehen die so markierten Elemente auch in anderen Funktionen zur Verfügung.

Die Compare Funktion

Damit lassen sich zwei Instanzen einer Klasse bezüglich Inhalt miteinander vergleichen. Properties unterschiedlichen Inhalts werden dabei rot hervorgehoben. Die Handhabung funktioniert bei dieser Funktion ähnlich wie in BeyondCompare. Das ganze funktioniert für Einzelinstanzen wie auch Instanzen aus einer Liste.

Compare1

Die Show All Instances Funktion

Geistern ungewollt mehrere Instanzen einer Klasse herum, obwohl man nur eine erwartet, können sich ziemlich schwer zu findende Fehler daraus ergeben.
Mit dieser Funktion kann man sich nun alle Instanzen eines Typs ansehen, die im Speicher geladen sind:

ShowAllInstances1

Es gibt noch Funktionen, die nur im Enhanced Mode benutzt werden können. Darunter sind Simplify und Foresee.

Ich konnte diese Funktionen nicht selbst testen, da ich nur die Trial-Version installiert hatte, und in dieser der Enhanced Mode nicht freigeschaltet ist.
Mit Simplify kann man verschachtelte logische Ausdrücke zur Laufzeit durch Anzeige ihrer Teilergebnisse auswerten, während Foresee dafür nützlich ist, wenn z.B. ein Fehler erst im n-ten Iterationsschritt auftritt. Es durchläuft die Iteration bis zum n-ten Schritt und kann anhalten. Dazu «sieht» es voraus, welche Werte die Daten im jeweiligen Iterationsschritt annehmen.

Filtering

Mit der Filter-Funktion können alle Instanzen eines Typs angezeigt werden, die eine Bedingung erfüllen, z.B. deren Property xy einen bestimmten Wert hat:

Filtering1

Hier werden alle Instanzen gezeigt mit AcquisitionModeId = ‹Highres›.

Conditional Breakpoint

Den conditional breakpoint kann man schon mit Visual Studio Bordmitteln erzeugen. OzCode bietet dazu einen kleinen Wizard aus dem Kontextmenü z.B. einer Property im Debug-Panel an, z.B.
Kreiere einen breakpoint, wenn die gewählte Property den Wert soundso hat:

CreateConditionalBreakpoint1

Tracepoint Messages

Mit OzCode ist es möglich, beim Debuggen eine Art Logging zu erstellen. Dazu kann man sogenannte Tracepoints erstellen und diese mit einem Text (als Expression) versehen, in welchen Variablenwerte geschrieben werden können. Im zugehörigen Panel werden dann beim Durchlaufen die jeweiligen Tracepoints mit der angegebenen Expression samt Timestamp aufgelistet:

Tracepoint Messages1

Zu guter Letzt gibt es die nützliche QuickAttach Funktion. Jedesmal, wenn man normalerweise den VS-Debugger an eine laufende Applikation attachen möchte, muss man sich durch die gleichen Menüpunkte klicken.
OzCode merkt sich den gewählten Prozess (auch über das Beenden von Visual Studio raus), und im Handumdrehen (der Eintrag kann auch an einen Tastatur-Shortcut gebunden werden) lässt sich ein Attachen bewerkstelligen.

Fazit

OzCode erweitert den Visual Studio Debugger um eine Handvoll nützlicher Funktionen, die im Einzelfall einiges an Zeit und Schweissperlen sparen können. Gemäss eigenen Angaben wird die Funktionalität laufend erweitert und verbessert – über einen Menüpunkt im OzCode-Toolbar lassen sich sogar Funktionsvorschläge an die Entwickler senden.

Die Einzelversion kostet im Moment noch 70$, eine Firmenlizenz rund 100$. Dies gilt, so lange man gemäss Homepage unter den ersten 5000 Käufern ist. Die Trial-Version ist 30 Tage gültig, man wird aber nach dem 20.Tag beim Benützen von Visual Studio täglich gepiesakt, dass sie jetzt nur noch soundso viele Tage gültig ist.

 

 

 

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden
NACH OBEN
Zur Webcast Übersicht