(This is going to be my last post about the DevAcademy II; I promise.)
The video recording of my Developers Academy II lecture (DEV409: Psychic Performance and Debugging 101, download the slides and demos too) is now available. If you tried accessing it during the last two days, there was something wrong with the streaming, but it works now (I’m watching it as I’m writing this post). There are several funny quotes, such as “The last thing I prepared for you is an application crash; it’s a good way to end the day – a crash.”
By the way, thank you all one last time for attending, and thanks for choosing to read this and watch my video.
A brief summary of what you’ll see in the video (each supported by a practical demonstration, the tools and process to diagnose the problem, the necessary theory to understand the issue, and a practical solution):
- Diagnosing a .NET memory leak
- Diagnosing GC trouble which causes the application to spend too much time in GC
- Diagnosing an application hang caused by an orphaned lock
- Explaining a cache collision scenario introduced by a single field in data structure
- Diagnosing excessive contention and using a lock-free queue to solve it
- Diagnosing an application crash using WinDbg and production-debugging breakpoints
I also recommend you take a look at the matrix of all lecture recordings. I will certainly be watching most of them in the following couple of days.
The recording quality is terrible (the video is bad; audio is all right), but on LCD screens it’s quite possible to see what’s going on (especially since the WinDbg sessions are black on a white background, even though the fonts are smeared a little bit).
Using the .foreach debugger command to display the GC roots of all objects of a particular type.
Setting a breakpoint in the CLR before GC occurs, to display the contents of generation 0 (using the community debugging extension SOSEX).
Explaining about the evolution of locking in computer algorithms, as an introduction for wait-free data structures (comparing a lock-free queue to a queue that uses a .NET monitor for synchronization).
Using the Windows Performance Monitor to monitor the demo application for contention, memory usage, CPU usage and other parameters. Note the DevAcademy.OrderProcessing performance counters – these are custom counters exposed by the application.
(By the way, it’s in Hebrew. You will still be able to see the demonstrations and the various WinDbg commands if you don’t understand Hebrew, but there are lots of audio explanations as to what’s going on …)