Advanced .NET Debugging book

Last week i got the new Advanced .NET Debugging book by Mario Hewardt (co-authored with Daniel Pravat) in the mail.  I had the pleasure of tech reviewing it earlier this year and it is a really good deep dive in .net debugging and .net internals.

The book talks about debugging .net apps with WinDbg and with PowerDBG (Powershell scripts for debugging by Roberto Farah) as well as other tools and techniques for debugging .net apps, and is well worth a read if you are interested in .net debugging.


Comments (14)

  1. What other books (if any) would you recommend for brushing up on advanced debugging?

  2. Jonathan says:

    Advanced debugging? Where are the beginning debugging books? :}

  3. Tess says:

    my favourite is John Robbins .net debugging book. It’s good for advanced and beginner .net debuggers.   In reality it’s a book about troubleshooting in general sprinkled with lots of good post-mortem debugging tips.

  4. Andre Nobre says:

    I have both John Robbins and Mario Hewardt books. I really recommend them, for begginers and advanced debuggers.

  5. alonesword says:

    hi tess, can u send a copy of the book to me .


  6. alonesword says:

    hi tess, can u send a copy of the book to me .


  7. Tess, When a you going to write a book?

  8. Jacky Tao says:

    John Robbins’s .net debugging book<<Debugging Applications for Microsoft .NET and Microsoft Windows>> was published on March 26, 2003 . It’s too old. 🙁

  9. Tess says:

    The john robbins book deals a lot with how to think when debugging certain problems, and the good part is that this hasn’t changed much since 2003.    

    Although there are a lot of new profiling tools on the market pretty much all that is said in that book still holds.  The things that change are the technologies you debug, but the same practices can be applied to debugging older technologies as newer ones. The types of problems that you could create in your .NET apps back then (hangs, crashes, memory leaks, exceptions etc.) are also very much the same…  so i think even though it’s from 2003 it’s still a very valuable book.

  10. Tim says:

    Tess, how useful would you say this book would be for .Net 1.0 apps (I note even the *ancient* John Robbins one is 2.0)?

  11. Tess says:

    Tim,  I would say that it is useful for 1.0 as well given that the core of the framework has been the same all the time as well as .net debugging.  The problems have changed but both this and the Robbins book talk a lot about concepts that have been the same throughout all the versions

  12. Tim says:

    Ok, thanks – I’ll give it a try.


  13. arun says:

    I have read few it's chapters and found it very use full to get knowledge on working of CLR and how to use sos.dll with windbg to see  what is happening when a .net application gets executed.

    Tim , i have been searching for this book on net to download a copy for myself but could not found it. could you please send a copy for me on

    Thanks in

  14. serge says:

    I have posted the same comments at another site but I thought I would post them here as well because this book should save time to practitioners, and not require them to battle various issues while trying to learn. The comments below were sent to the author:

    I have listed below various issues that I encountered so far in the book, – some of them are just typos, others are questions, and, so far, there is one annoying issue that I keep running into related to the 05Native.cpp file. The file is missing functions that are referred in the book, and I had to add code myself. It would be good to post the updated file just to save readers some time . I have a couple of chapters to go through but, overall, this is a very nice book despite my complaints :

    • Page 201 – setting the “!bpmd  –md  001e3250” doesn’t work. Cannot break at this point. Tried using “!mx 04codegen!*add*” and then  “!mbm *!Advanced.NET.Debugging.Chapter4.CodeGen+Add 0” and that didn’t work either.

    • Page 234 – there is no such sample code in the source folder Chapter5, or in the binaries.

    • Page 259 has a typo: “The next object begins at address 0x1c65928”, should be: 0x1c65968

    • Page 301 – “Event is waiting” not clear. Events could be in signaled and nonsignaled state, so, what does the waiting state mean? Does it mean that it is in signaled state and is waiting to be reset?

    • Page 303 – the command line “!handle 238 8” – not clear what the last ‘8’ means? I assume this is just a typo.

    • Page 336 – [DllImport(“06Native.dll”)] – typo should be 05Native.dll.

    • Page 350 – 05Native.cpp doesn’t have Myfunc() function. Needed to create one myself.

    • Page 352 – after typing “dv (NOTE: I am using WinDbg) ”, I got this message:

    o Breakpoint 0 hit

    o eax=00953044 ebx=00181e28 ecx=00199a88 edx=00000000 esi=0012f3f8 edi=0012f69c

    o eip=10011580 esp=0012f3c8 ebp=0012f3e0 iopl=0         nv up ei pl zr na pe nc

    o cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246

    o 05Native!MyFunc:

    o 10011580 55              push    ebp

    o 0:000> dv

    o Unable to enumerate locals, HRESULT 0x80004005

    o Private symbols (symbols.pri) are required for locals.

    • Page 361 in WinDbg after I typed “!lines” command, I received this message:

    o !lines

    o Line number information will not be loaded

    o *** WARNING: Unable to verify checksum for D:DownloadsBooksAdvancedDotnetDebuggingChapter7Sig5Native.dll

    • Page 365 – 05Native.cpp doesn’t have AsyncProcess function defined. This file really needs to be updated. The 05Native.dll in the Binaries folder also doesn’t seem to have this function.

Skip to main content