I don’t know if you have a driving license. Even if not, you will surely understand this sublime analogy presented by me. Sometimes, you drive a car and know traffic regulations. You can drive this manner successfully for the whole life. However, if you aim to be a professional driver, an old stager, it takes whole days in a car and sooner or later you get dirty with grease by working with an engine. This is how I see the .NET developer’s life. The vast majority may ride „very well”, knowing the syntax, design patterns, tricks of trade. They are professionals. Yet, there is a small group of geeks, nerds, old stagers, that are looking for something more. They want to understand CLR internals, know how does everything work, how to dig in into memory and how to use raw tools such as WinDbg. I consider this is plainly speaking a mind-absorbing occupation and can draws everybody’s attention, even for a while. The popularity of devWorkshops delivered in Poland by me and Sebastian Solnica confirms this presumption.
There is a book I can solemnly recommend for such group – Advanced .NET Debugging by Mario Heward.
This title is a second book from the series. The first one concerned debugging native application, Advanced Windows Debugging. However this one is completely devoted to .NET and how to dig into it, mainly with a use of WinDbg. It is written in a clear and consistent manner. Therefore, if, somehow, you are drawn by interlans topics, the book is definitely for you. Contrary to appearances, it’s not a book for experienced old stagers that know WinDbg inside out. I would rather treat it as a solid introduction, for the purpose of getting know tools, showing some practical problems and how to solve them. Then, by getting know the content, you can check whether you got bitten by the bug or not. If so, a long, tedious way of reading, watching, spying is awaiting for you. But most of all you will get dirty with a grease of own code.
Please, don’t get me wrong. This is not a book for children. If the look of addresses, bits and memory dumps makes you sick, this book is not your cup of tea. You won’t find a stories like: „let’s imagine that memory is like Lego bricks and here we have the brick representing an integer”. Author exemplifies everything with examples in WinDbg. IMHO this is a huge advantage.
Every rose has its thorns, though. First of all, it was published in 2009 and so book almost completely concerns .NET 2.0 and 32 bit version – 4.0 version had just been in beta version. However there is a last chapter that refers to beta version – as much or as little as this. This is not very problematic, though. The knowledge attained by the book is completely useful nowadays – only needs refreshment such as netext extension. Secondly, I would write some more about the memory dump analysis. This is my personal feeling, though.
Anyways, to sum it up, I would strongly recommend the book to those who want to dig in into the problem, yet they don’t have a broad knowledge – or even no knowledge. Old stagers can read, in order to systematize the knowledge – give it a go!