Ingo Rammer thinktecture.

Slides:



Advertisements
Ähnliche Präsentationen
E-Solutions mySchoeller.com for Felix Schoeller Imaging
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
R. Zankl – Ch. Oelschlegel – M. Schüler – M. Karg – H. Obermayer R. Gottanka – F. Rösch – P. Keidler – A. Spangler th Expert Meeting Business.
Microsoft Referenzarchitekturen- Infrastruktur für Connected Systems
Entwicklung und Einsatz von Smart Client-Anwendungen Jens Häupel Developer Evangelist Microsoft Deutschland GmbH Dirk Primbs.
Windows Vista Deployment
Windows Vista für Entwickler
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Desktop All Users \ Dokumente \ Eigene Bilder \ Beispielbilder Lokale Einstellungen \ Anwendung- sdaten \ Identities \ {B2E3E498-D8E7- 4EC FA }
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
M A X - P L A N C K - G E S E L L S C H A F T Bericht des Partnerinstituts Sabine Krott 1.0 Pilotentreffen im Harnack-Haus, 8. Juni 2006 Distribution:
Windows Small Business Server 2008
Gehärtet von Anfang an { Windows 2008: Spezielle Aufgaben }
Advanced Debugging F9 ist nicht genug Ingo Rammer
Microsoft Office Forms Server
GPO Commodity Marketing April, 2013
Kooperationsmöglichkeiten im Bereich Medienkompetenzförderung Heidelberg, 06.Juni 2011 Jürgen Nilgen Area Sales Lead Germany | Microsoft Learning.
Windows Essential Business Server 2008
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
Video Streaming mit Silverlight
3rd Review, Vienna, 16th of April 1999 SIT-MOON ESPRIT Project Nr Siemens AG Österreich Robotiker Technische Universität Wien Politecnico di Milano.
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Automatisches Testen ohne Frust mit CodedUI
René Leupold IS Developer Comgate Solutions AG Entity Framework Ein Überblick.
Neno Loje Berater & MVP für Visual Studio ALM und TFS (ehemals VSTS) Hochqualitative Produkte mit Visual Studio & TFS 2010.
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH.
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
Roger Boesch Developer Technical Specialist Developer and Platform Group.
Scripting mit Windows PowerShell
Thomas Claudius Huber Senior Consultant Trivadis AG Silverlight 5 die Neuerungen.
Quelle: Standish Group, 2006 Fourth Quarter Research Report, CHAOS Research Results.
Agenda 1. Microsoft Unified Communications – Was ist das eigentlich?
SQL Azure Administration
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
Spricht Ihre Anwendung schon Open XML?
Dirk Primbs Developer Evangelist Microsoft Deutschland GmbH.
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Department of Computer Science Homepage HTML Preprocessor Perl Database Revision Control System © 1998, Leonhard Jaschke, Institut für Wissenschaftliches.
XML IV: Cocoon 2.
Virtual Earth Visualisierung von Geodaten Daniel Walzenbach, Microsoft Deutschland GmbH
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Cyber-Security und Datenschutz in der Cloud Wie passt das zusammen?
Intensivmedizin-Applikation mit WPF, WCF und LINQ
Confidential Sequans – GlobSys Project Multi-company issues Wolfgang Schaefer Project Manager – FS EMEA May 2009.
Criteria for Authorship
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
Microsoft Cloud Day Herzlich willkommen!. Microsoft Cloud Day MSDN Veranstaltung Die Cloud Plattform als Erfolgsbaustein – Wie Sie als Softwarefirma von.
Die nächste Generation von Microsoft Office System 2007 Microsoft Office System Gernot Kühn Technologieberater Office System Mittelstandsbetreuung.
Thomas Claudius Huber Senior Consultant Trivadis AG WCF RIA Services Datengetriebene Apps.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
…und nun aber zum heutigen Vortrag Die Herausforderung: Krisen und andere Verwerfungen Die Herangehensweise: Kosten senken & Produktivität erhöhen Das.
Mit IT IS enbex Hand in Hand Zeitgemäße Unternehmen sind auf schnellen und sicheren Datenaustausch angewiesen IT IS AG.
Sprachneuerungen des .NET Frameworks 3.5
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Weg mit Fehlern, die kein Entwickler versteht …
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH.
Arbeiten in einem agilen Team mit VS & TFS 11
Azure Backup, Azure Backup Server und Azure Site Recovery
Azure Active Directory und Azure Active Directory Domain Services
Lync and Learn mit Manfred Helber Thema heute:
Azure Mobile Services Deep dive into node.js scripting
Firmeninternes Softwarelogo
 Präsentation transkript:

Ingo Rammer thinktecture

Kleine Beratungsfirma für Softwareentwickler Unterstützung, Coaching und Beratung für Software- Architekten und -Entwickler Architektur- und Code-Reviews Prototypentwicklung und Architekturberatung Coaching und Mentoring Anwendungsoptimierung und Troubleshooting

Debugging von Applikationen mit Visual Studio Erweiterte Breakpoints, Tracepoints,... Makros Debugger-Attribute Visualizer für eigene Typen Visualizer für fremde Typen Neues in Visual Studio 2008 Vorbereitung von Anwendungen für Debugging

Teil 1 F9 ist nicht genug Das kann Visual Studio

Breakpoints Just My Code (Tools Options Debugging General) CTRL+B, Breakpoint Groups Tracepoints Hitcount Conditions Makros Command Window help alias

Ausdrücke in Variablenfenstern (Watch, Locals, Autos) DebuggerDisplay DebuggerProxy DebuggerVisualizer

Interaktive Klassenerstellung Aufruf von statischen Methoden Object Workbench Aufruf von Instanzmethoden Immediate Fenster

Just in Time Debugger HKLM\Software\Microsoft\Windows NT\CurrenVersion\AeDebug

Debugging in den.NET Framework Quellcode guring-visual-studio-to-debug-net-framework-source- code.aspx Oder: Suche nach debugging.net source code 2008 Grund warum ich es nicht zeige: benötigt Internet- Verbindung, Quellcode ist nicht gecached Multithreaded Debugging

public class Invoice { [DebuggerDisplay("Items: {_items.Count} Sum: {Sum}")] private List _items = new List (); public double Sum { get { double sum = 0; foreach (InvoiceItem itm in _items) sum += (itm.Price * itm.Amount); return sum; } public class Invoice { [DebuggerDisplay("Items: {_items.Count} Sum: {Sum}")] private List _items = new List (); public double Sum { get { double sum = 0; foreach (InvoiceItem itm in _items) sum += (itm.Price * itm.Amount); return sum; } [DebuggerDisplay]-Attribut

[DebuggerVisualizer] Attribut Klassen müssen [Serializable] sein Visualizer erhält serialisierten Klon Rückmeldung per objectService.ReplaceObject() [DebuggerVisualizer(typeof(MyVisualizer))] [Serializable] public class Invoice { //... } [DebuggerVisualizer(typeof(MyVisualizer))] [Serializable] public class Invoice { //... }

Für Applikationsklassen (Visualizer in gleicher Assembly wie Anwendung) Referenz auf Microsoft.VisualStudio.DebuggerVisualizers Ableiten von DialogDebuggerVisualizer protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) { MyClass dt = (MyClass) objectProvider.GetObject(); Form1 frm = new Form1(); //... show data... windowService.ShowDialog(frm); } protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) { MyClass dt = (MyClass) objectProvider.GetObject(); Form1 frm = new Form1(); //... show data... windowService.ShowDialog(frm); }

Möglichkeit 2: Getrennte Visualizer in Klassenbibliothek Visualizer kann global oder per User installiert werden: Program Files\Microsoft Visual Studio 9\ Common7\Packages\Debugger\Visualizers My Documents\Visual Studio 2008\Visualizers [assembly: System.Diagnostics.DebuggerVisualizer( typeof(InvoiceVisualizer), typeof(VisualizerObjectSource), Target = typeof(Invoice), Description = "Invoice Visualizer")] [assembly: System.Diagnostics.DebuggerVisualizer( typeof(InvoiceVisualizer), typeof(VisualizerObjectSource), Target = typeof(Invoice), Description = "Invoice Visualizer")]

Stellvertreter-Klassen im Debugger Werden automatisch statt den ursprünglichen Klassen angezeigt [assembly: DebuggerTypeProxy(typeof(InvoiceProxy), Target = typeof(Invoice))] public class InvoiceProxy: Invoice { private Invoice _val; public InvoiceProxy(Invoice val) { _val = val; }... [assembly: DebuggerTypeProxy(typeof(InvoiceProxy), Target = typeof(Invoice))] public class InvoiceProxy: Invoice { private Invoice _val; public InvoiceProxy(Invoice val) { _val = val; }...

Teil 2 Vorbereiten für´s Debuggen

Wofür? Zeitersparnis während Entwicklung Unterstützung im Testbetrieb (Friendly Customers) Fehlersuche im Echtbetrieb (Production Debugging) Grundsätzlich Während der Entwicklungszeit bestimmen Sie die notwendige Zeit für späteres Debugging

Primärer Einsprungpunkt für späteres Debuggen Drei Grundregeln Auslösen von nicht-essentiellen Exceptions vermeiden (TryParse, File.Exists) Was ist essentiell? Wenn die Methode nicht das macht (oder: machen kann), was der Name nahelegt, dann wird eine Exception geworfen Exceptions werden nur dort gefangen, wo die Applikation etwas mit der Exception machen kann Logging ist kein Grund für re-throws! (Callstack gibts auch später noch) Wo muss gecatcht werden? Threadprozeduren, Finalizer, eventuell Events

Kleiner, feiner Debugger Zwei Versionen: MDbg SDK (hier nicht relevant) MDbg Sample (mit Sourcecode) Bietet komplettes Debugger Objektmodell

Zu lange Locking-Dauer ist ein Problem für Skalierbarkeit von Applikationen Was kann man im Debugger machen?

Speicherabbilder sind die ultimative Unterstützung zur Fehlersuche Zeigen den Status einer Applikation zu einem bestimmten Zeitpunkt Zwei Ausprägungen Minidump: praktisch nur Callstack, wenige KB gross Minidump mit allen Optionen: komplettes Speicherabbild, kann einige 100 MB gross werden

DbgEng.DLL (aus Debugging Tools for Windows) Darf in Ihre Programme integriert werden [DllImport("DbgHelp.dll", SetLastError = true)] private static extern bool MiniDumpWriteDump( IntPtr hProcess, int processId, IntPtr fileHandle, int dumpType, IntPtr excepInfo, IntPtr userInfo, IntPtr extInfo); [DllImport("DbgHelp.dll", SetLastError = true)] private static extern bool MiniDumpWriteDump( IntPtr hProcess, int processId, IntPtr fileHandle, int dumpType, IntPtr excepInfo, IntPtr userInfo, IntPtr extInfo); FileStream stream = Process proc = Process.GetProcessById(pid); int dumpType = (int)0x ; // all options // int dumpType = (int)0x ; // minidump MiniDumpWriteDump(proc.Handle, proc.Id, stream.Handle, dumpType, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); FileStream stream = Process proc = Process.GetProcessById(pid); int dumpType = (int)0x ; // all options // int dumpType = (int)0x ; // minidump MiniDumpWriteDump(proc.Handle, proc.Id, stream.Handle, dumpType, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);

Debugging von Applikationen mit Visual Studio Erweiterte Breakpoints, Tracepoints, Makros [DebuggerDisplay], [DebuggerVisualizer], [DebuggerProxy] Neues in Visual Studio 2008 Vorbereitung von Anwendungen Exception-Handling MDbg Eigene Debugger mit dem Objektmodell von MDbg Beispiel: Lock-Bearbeitung

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.