Wednesday, February 25, 2009

CINNUG Presentation Followup

Last night was my second go-round giving my Production Debugging talk. This time it was for the Cincinnati .NET User Group. This group is run by a great group of people, Mike Wood, Matt Brewer, & Phil Japikse (sorry if I left anyone out). There was quite a turn-out last night at 67 people, nearly setting the record for the group! I was impressed by the passion and insightful questions of all those in attendance and want to give thanks to the organizers as well as the attendees.

Feedback thus far has been extremely positive which goes a long way to validate why I believe so strongly in the .NET community and getting involved in giving back. Hopefully everyone there last night learned a few new tricks and will be better prepared for when those critical issues happen.

One question came up last night that threw me for a bit of a loop and so after ruminating on that question some more last night I wanted to go ahead and address it here on the blog. The question was roughly:

During the crash demo why didn't you open the 1st Chance NullReferenceException dump? Wouldn't that have shown us the original error and location without having to jump through hoops in the 2nd chance dump to find it?


This was a great question, and in reference to this particular simple crash demo was spot on correct! For this very simple case opening the 1st chance dump would have been a quicker way to get to the root of the problem. For more complicated crash scenarios however this likely would not have been a good choice. If we remember what I spoke about last night in regards to how exceptions are handled, the 1st chance exceptions occur when the exception is first thrown and the application has not yet had a chance to handle that exception. Therefore in a more complicated scenario there potentially could have been multiple 1st chance exceptions of NullReference or other types out there that had corresponding dump files written but were actually handled gracefully by the application and not the source of the actual application crash. In those types of scenarios we want to make sure to open the 2nd chance dump so that we can be sure that we are looking at the actual UNHANDLED exceptions.


As promised, I have attached all the presentation materials to this post so people can refer back to them later. There are a lot of files in the package, so I recommend first checking out the Readme.docx which talks about what each of those files represents.

Please feel free to leave any comments / questions you may have either here on my blog or ping me on twitter.

Happy debugging!

0 comments: