Having a job where you need to deal with user mode memory dumps for customer issues it’s always good to have some cool tools to ease your job. When you start doing analysis for same kind of issues always this thought arises ‘why not automate’ the analysis.
When Debug Diagnostic Tool was released I was really excited that we could write analysis to target memory dumps and thereby find glaring issues easily. Default analysis scripts provided most of the basic analysis for hang/crash/memory related issues for user mode process in general and some analysis specific to IIS and few other products. I had written a detailed Introduction to Debug Diagnostic Tool here
Debug Diagnostic is an awesome tool but not many know that!
One day I got excited and got my Developer Hat On and started writing some analysis code, and that’s when I realized I had become too lazy to write code in ASP + VBScript and also as a .NET developer how the hell can I write code without intellisense
This made me think about the features and functions missing in Debug Diagnostic Tool to make it the best tool for post mortem debugging of user mode process.
So here are some things I wanted to see in the tool
- Analysis divided into plug-ins according to their usage
- Automatic update for analysis plug-ins when analysis is updated
- Use .NET language (C#) to write the plug-ins with complete Intellisense
- An object model which can be molded so as to not break all the analysis plug-ins
- Have the ability to customize the analysis templates
- Simple HTM based report
- Report look and feel can be changed without touching the existing plug-ins code
- Interactive debugging console where you can get commands added to inside the analysis Plug-ins
- lot more to come here… will update later :)
Adding all these features I know is a big-ask so I took up this task and this new tool called Debug Analyzer.NET was born.
This application was written just like an external person reading through Debug Diagnostic Tool Help file and going through Object Browser in Visual Studio. My development machine (laptop) is configured for Microsoft Public Symbol Server so that even accidently I would not step out to the trouble zone.
Most important ingredient for the tool is an easy to build and use Plug-in model and ‘Plug Framework’ which I wrote couple of years back came into use. For simplicity the plug-ins written with this Framework is called ‘Plugs’. I wrote this Framework to build a number of other cool applications some of which are in cooking stage at the moment (maybe some more will come out once the work on this application is done).
Debug Analyzer.NET has all the above features and much more and I’ll be writing about analysis, things I learnt in the process of building this application etc on this blog. When I started building this application I was trying to target .NET Framework 2.0 but later realized that newer version of the Framework and the newer compiler would make me more productive. Specially I love lambda expressions and LINQ and also some things available as part of Regular Expressions. Will write about these in more details later.