Allgemein Für Administratoren Für Architekten Für Entwickler Für Projektleiter Für Tester News Produkte Publikationen
X
Manuel Pfemeter
ist Consultant, Autor und Referent im Umfeld Microsoft ALM bei der AIT GmbH & Co. KG Stuttgart.

Manuel Pfemeter

Neu in TFS 2013: Verbesserte Memory Diagnostics

Freitag, 20. September 2013

Mit Visual Studio Ultimate ist es schon lange möglich Prozess-Abbilder (Dump) mit Hilfe der Memory Diagnostics zu analysieren. Microsoft schließt mit der Veröffentlichung der neuen Version von Visual Studio eine Lücke beim Analysieren dieser Abbilder, zuvor musste zwingend zusätzliche Werkzeuge verwendet werden.

Zu den bestehenden Funktionen ausschließlich nativen Code und Code bestehend aus sowohl nativen als auch managed zu debuggen, sind in Visual Studio Ultimate 2013 zwei weitere Möglichkeiten ein Dump mit Memory Diagnostics zu analysieren hinzu gekommen:

  • Debug with Managed Only und
  • Debug Managed Memory

Gegenüberstellung der Actions in VS 2012 und VS 2013 RC

Dumps erzeugen

Prozess-Abbilder können mit einer Vielzahl von Werkzeuge erzeugt werden. Windows liefert bereits dafür mit dem Task Manager eine rudimentäre Möglichkeit. Andere Werkzeuge besitzen erweiterte Fähigkeiten. ProcDump von SysInternals kann zum Beispiel beim Auftreten von bestimmten Fehler automatisch ein Abbild erzeugen.

Bisherige Funktionen

Mit Hilfe der bisherigen Funktionen „Debug with Mixed“ und „Debug with Native Only“ konnten Dumps gedebuggt werden. Die entweder aus nativen oder gemischt aus nativen und gemanaged Code bestehen. Dabei springt der Debugger von Visual Studio in den Zustand des Zeitpunktes des Erstellens des Abbildes. Dadurch lassen sich die Werte der einzelnen Objekte analysieren, wie auch den Call Stack. Hierbei sind aber Symbole, in PDB-Dateien persistiert, von Nöten. Diese können automatisch vom Microsoft Symbol Server bezogen werden, oder müssen manuell Visual Studio publik gemacht werden.

Debug with Managed Only

Mit „Debug with Managed Only“ lässt sich ein Dump debuggen, welcher ausschließlich Assemblys (Managed Code) berücksichtigt, Nativer Code wird hierbei außen vor gelassen. Dazu sind wiederum die dazugehörigen Symbole notwendig. Ein Vorteil dieses Moduses hierbei ist, dass der Debugger nur Assemblys lädt und somit sich der Dump schneller debuggen und diagnostizieren lässt. Die Funktionsumfang ist während des Debuggens der gleiche wie bei Mixed und Native only. Eine Einschränkung in diesem Fall ist, dass Anwendungen mit nativen Code-Anteil nicht vollständig diagnostiziert werden kann.

Debug Managed Memory

In älteren Visual Studio Versionen als 2013 musste, wenn ein Dump-File auf ihre Objekte analysiert werden soll. Auf andere Werkzeuge zurückgegriffen werden. In Visual Studio Ultimate 2013 ist dieses Szenerio nun von Haus aus realisierbar.

Ist eine Dump-Datei in Visual Studio 2013 geladen, kann diese über “Debug Managed Memory” gedebuggt werden. Visual Studio analysiert den Dump auf dessen Objekte. Anders als bei “Debug with …”, werden hierfür keine PDB-Dateien benötigt. In der Heap View-Ansicht sind die verwendeten Klassen zu sehen, eine Ebene tiefer, deren Instanzen. In den Spalten stehen weitere Informationen wie Anzahl der Instanzen einer Klasse, Größe jedes Artefakts und die insgesamte Größe aller Kinder-Objekte.

Zusätzlich kann noch eine Baseline ausgewählt werden, diese ist ebenfalls ein Dump. Dadurch werden die zwei Dump-Dateien miteinander verglichen, es werden zu jeder der oben genannten Spalten eine weitere eingeblendet. Darin sind die Unterschiede zwischen den Werten aus beiden Dump-Dateien gelistet.

Auflistung der Klassen und ihrer Objekte

Mit einem Klick auf eines der Instanzen, erscheinen im unteren Bereich des Fensters unter “Paths to Root” die Pfade der anderen Objekte  die das Objekt verwenden. Unter “References” Instanzen, die von der ausgewählten Instanz referenziert werden.

Objekt und dessen Referenz

Fazit

Mit den neuen Möglichkeiten von Memory Diagnostics des Visual Studio lassen sich einfach Process-Dumps analysieren und so auf potentielle Probleme der Anwendung Rückschlüsse ziehen. Hierfür sind nicht einmal PDB-Dateien der Assemblies nötig. Einziger Wermutstropfen ist, dass ausschließlich Ultimate-Nutzer in Genuss dieses Features kommen.

Verwandte Artikel:

Benötigen Sie Unterstützung bei der Software-Entwicklung und Architektur von .NET basierten Lösungen oder bei Einführung und Anpassung von Visual Studio / Microsoft Test Manager / Team Foundation Server?

Wir stehen Ihnen unter info(at)aitgmbh.de gerne zur Verfügung.

Tags: , , , , ,

Hinterlasse eine Antwort