feedback from my session on .net advanced debugging + TIP of the day on sos.dll

just got an IM from a person who attended my session on teched. on the session I showed how to use the sos debugger extension to analyze dump files, especially if you have problems on production environments.

he was able to track down a design problem of not having a dispose method along with it’s Finalize, chris sells mentioned this not long ago on the DNR.

anyway it’s great knowing people are actually using what you show, because it was a fairly low level stuff, windbg is not something easy to show, people like to see windows and graphics and not just dumps of memory.

I think I’m going to write some more about production time debugging in the next few days, especially on the problems you have when using the sos extension dll,

TIP of the day: did you know that you could use visual studio 2003 to load the clr v1.0 sos.dll ?

Comments (4)

  1. DBD says:

    I’ll divide my comment to three messages because I have a strange problem with my PC 🙂

    1. Well… I see you’ve decided to post it in your blog… 🙂

    Anyhow, as Yosi’ve said – I had a problem with one of my objects,

    which implemented multi-threaded communication scenario.

    The biggest mistake I’ve done was trusting the garbage collection


  2. DBD says:

    2. So it happens, that even though I’ve included destructors for all my

    objects (~Object), the __gc somehow decided to ignore it or initiate

    it on so-it-seems random events.

    That’s why I’ve decided to implement the IComponent interface for all

    my objects. thats how I can be sure an object is really disposed (by

    running the deligate of Disposed).

  3. DBD says:

    3. About the binary memory dump – It surly was an unpleasent moment.

    I had to search the net (and your power points from the session) for

    the dump tools. Then, I’ve somehow noticed the thread which stays

    opened. That’s when I’ve started to add houndreds of watched and to

    step into each and every function… I’ve found the problem, solved

    it (implemented the interface I’ve told you about) and.. now everything

    seems to work just fine :).