DDC2015 WPF Troubleshooting in VS2015 Session

Logo_DDC_2015

Today I delivered a session on Troubleshooting of WPF applications using the in-the-box tools of VS2015.

The slides can be found here:

ManuelMeyer DDC2015 WPF Troubleshooting mit VS2015

After defining the terms “debugging” and “profiling”, I showed new but non-WPF debugging features available in Visual Studio such as PerfTips, 64bit Edit & Continue, Watch Window Lambda Expression Evaluation and the Diagnostic Tools Window:

ManuelMeyer_Dbg2015_Abb3_PerfTips

I think PerfTips are a great tool and a huge timesaver. They let you immediately spot a slow method in your code without event thinking about inserting some System.Diagnostics.Stopwatch code.

ManuelMeyer_Dbg2015_Abb4_DiagnosticToolsWindow

The Diagnostic Tools Window adds information to your debugging session that was only available by means of a profiling session before. It allows you to easily spot any spike in CPU or memory consumption or any suspicious garbage collector activity.

The Memory Tab is really powerful for analyzing issues such as memory leaks. Check out these blog posts for details:

http://blogs.msdn.com/b/visualstudioalm/archive/2015/01/16/diagnostic-tools-debugger-window-in-visual-studio-2015.aspx

http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/13/memory-usage-tool-while-debugging-in-visual-studio-2015.aspx

http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/29/diagnosing-event-handler-leaks-with-the-memory-usage-tool-in-visual-studio-2015.aspx

We then focused on the WPF related debugging tools Live Visual Tree and Live Property Explorer:

ManuelMeyer_Dbg2015_Abb6_LiveVisualTree_StockList1

 

ManuelMeyer_Dbg2015_Abb14_Selection3

I really appreciate that the properties are grouped by data source. This makes it very easy to figure out what is going on and where the actual runtime value comes from.

We concluded the session with a couple of demos that showed the power of the Timeline Tool for WPF:

timelinetool

timelinedetailsdrilldown

A great thank you goes out to Neue Mediengesellschaft Ulm (NMG) for the organization of the event and everybody who attended. Thank you very much!