Silverlight Debugging by yaofenjin


									Silverlight Debugging

          Alan Cobb
   Independent .NET Consultant
   Alan Cobb & Associates, Inc.
         Sacramento, CA

  Silicon Valley Code Camp 2008
Saturday, November 8, 2008, 3:45pm
          About Alan Cobb

• Independent consultant for over 20
  years on Microsoft platforms
• Silverlight, WPF, .NET, C#, C++
• One of directors of the SacDotNet
  User Group
Another Code Camp Session
• “WCF Debugging – Where Do I Start”
  – Presented by: Petar Vucetin
  – 9:15AM Sunday: Room 4204

• See also Web Service debugging section
  of Silverlight documentation:
  – “Debugging Services for Silverlight
     Presentation Overview
• Beginning:
  – Setting up VS2008 for SL debugging
  – Alternatives for SL tracing
• Intermediate:
  – SL debugging tools: Fiddler, Silverlight Spy
• Advanced:
  – Performance debugging
  – SOS extension: Low level .NET debugging
      Description on Website
• This session will survey a range of Silverlight 2
  debugging tools and techniques. At the beginner level
  we’ll review setting up VS2008 for debugging Silverlight
  C# and JavaScript code. Then we’ll look at different
  techniques for trace logging. At an intermediate level
  we’ll cover three debugging tools I use extensively:
  Fiddler, Silverlight Spy and NetLimiter. At the advanced
  level we’ll do some low-level Silverlight .NET debugging
  with WinDbg and the SOS debugger extension DLL.
  SOS helps you hunt for memory leaks by giving you a
  detailed view of the managed heap. Stack traces from
  SOS can sometimes reveal more about the context of
  bugs than VS2008 can.
    Beginning Level Issues :
• Setting up VS 2008 for SL debugging:
  – Know where the settings are
  – Turn on 1st chance exception handling

• Alternatives for Tracing in SL:
  – Debug.WriteLine and DebugView
  – Clog for Silverlight
          Setting up VS2008
• Use a Web Application Project
• Turn on 1st chance exception handling
• Where are the settings?
  – VS itself, Your project, Web.config, Internet
• Types of breakpoints:
  – JS, .NET client and server side
Turn on: “break when exception thrown”
Turn on: “break when exception thrown”
   Which code? Running Where?
Client:               Server:
Your SL code:         Your Web-Service

 Managed: C# / VB      Managed: C# / VB

Silverlight itself:   .NET framework:
 Managed: C#           Managed: C#

 Un-managed: C++       Un-managed: C++
Main Silverlight DLLs
SL Tracing: Debug.WriteLine
SL Tracing: DebugView
SL Tracing: DebugView
SL2 Tracing: CLog
• What is it?
  • HTTP proxy server
• What can you do with it?
  • Watching browser talk to Silverlight
  • Debugging cross domain policy file
  • Timing analysis (slow connection tests)
Fiddler: Watch HTTP conversation
Getting generic.xaml with Reflector
Fiddler Demo: Little Loader App
Fiddler: Slow Connection Testing
Fiddler: Download Timing Analysis
               Silverlight Spy
• How is Silverlight Spy constructed?
• Features:
   • Browse Silverlight element tree
     • Fly over element tree
     • See element statistics
     • Copy XAML for a given branch
   • Modify element properties interactively
   • Other
Demo: Silverlight Spy
   Debugging Performance Issues
• Seema Ramchandani’s PDC2008 talk
• FrameRate:
   • Host.Settings.MaxFrameRate
   • Host.Settings.EnableFrameRateCounter
   • CompositionTarget.Rendering event
• Host.Settings.EnableRedrawRegions

• Profiling:
  • Xperf ? (A free “profiler” from MS)
Performance: The Render Loop
Performance Instrumentation Demo
  SOS: Low-level .NET Debugging
• What is SOS?
  • Extension DLL for WinDbg debugger

• Downloading WinDbg setting up SOS
  • Intro articles on Silverlight and SOS: 1, 2
  • Pointing at Microsoft symbol server

• What can you use it for?
  • Examine Silverlight’s managed heap
  • Get more detailed stack traces
SOS: Where is SOS.DLL?
SOS Demo: Exception and Hang
SOS Demo: Detailed Stack Traces
SOS Demo: Finding Memory Leak
SOS Demo: Finding Memory Leak

To top