Und das ist die Session die Patric Boscolo zusammen mit Immu Landwerth zum Debuging gehalten hat. Viele Features von Visual Studio kannte ich schon einiges war mir jedoch neu - daher jetzt in Listenform, mache Dinge werden nur genannt, auf andere gehe ich mit ein paar Zeilen Erklärungstext ein.
- Einen Watch auf eine Variable anpinnen - kann ganz praktisch sein ich nutze ehr das Watch Fenster
- Bei einem Breakpoint nur anhalten, wenn dieser n-Mal erreicht wurde - hilfreich wenn z.B. ab dem 10 Aufruf einer Funktion Probleme auftreten und man keine Zählvariable für einen bedingten Breakpoint zur Hand hat. Ihr könnt eine solche Hit-Bedingung im Kontextmenü angeben, dazu Rechtsklick auf den roten Punkt.
- Wenn ihr eine Ausgabe von aktuellen werten braucht aber der Code nicht von Euch stammt und ihr kein Console.WriteLine(xyz) einfügen könnt (Ich würde Debug.WriteLine nehmen aber dazu später), dann hilft der Eintrag When Hit... weiter. Hier könnt ihr mit einer etwas eigensinnigen Syntax Ausgaben hinzufügen, die unter anderem auch die Thread Id enthalten können. Aber Achtung diese Geschichte ist nicht die schnellste und sollte wenn der Breakpoint oft getroffen wird und nicht alle ausgaben notwendig sind mit einer Bedingung kombiniert werden.
- Im Menü unter Debug -> Windows findet man das Immediate Window - hier kann man scripting mäßig Codezeilen hineinschreiben und bekommt direkt eine entsprechende Ausgabe. Was leider nicht möglich ist sind Lambda Ausdrücke.
- Die meisten von euch werden debug-visualizer schon kennen, zum Beispiel wenn man sich den Wert eines Strings anzeigen lässt hat man die Möglichkeit unterschidliche Anzeigeformen wie XML oder HTML zu wählen. Neu ist, dass man solche Visualizer jetzt auch mit managed Code selbst schreiben kann. Natürlich gibt es auch schon zahlreiche Visualizer fertig zum installieren - die Suchmaschine deines Vertrauens hilft hier weiter.
- Eine weitere Kleinigkeit die durchaus hilfreiche seien kann ist das verursachen eines Ausführungsstopps mit einem Methodenaufruf ohne einen Breakpoint zu setzen mit - System.Diagnostics.Debugger.Break();
So das war der erste Teil zur Debugging Session, Teil 2 folgt in den kommenden Tagen.