If broken it is, fix it you should

Using the powers of the debugger to solve the problems of the world - and a bag of chips    by Tess Ferrandez, ASP.NET Escalation Engineer (Microsoft)

Why I love the debugger...

Why I love the debugger...

Rate This
  • Comments 30

10 years ago, still in college, I started working for a company developing real-time systems for trains in Motorola HC11 assembly.
Although very interesting and challenging it was a relief to later move on to some more high-level languages, but in the end, no matter how high-level the programming language you work in, everything comes down to machine instructions and ones and zeros. There is just a bunch of stuff between you and the nitty-gritty that normally you might think you don't need to care about until the bomb hits (your production system written in your flashy high-level language breaks down) and this is where my friend the debugger comes in:)
 


I have worked for Microsoft since Jan 1999, starting off supporting Visual Interdev (oh the joy of those DTC’s
J) moving over to ASP.NET, making a brief stint in something called Solutions Integration Engineering and finally landing as an Escalation Engineer for .net.  Somewhere around the timeframe of when ASP.NET released and the problems were getting increasingly complex on the server-side, (since we were suddenly able to do virtually anything in web-pages), I started realizing that my current way of troubleshooting issues wouldn’t suffice. I delved into the world of debugging and my eyes were opened to a whole new world of troubleshooting. Since then, I have been evangelizing windbg (the mother of all debuggersJ) to anyone I meet, even some of my friends, not in the computer business have gotten their dose of “look what you can do in here, it’s amazing” while their thoughts were probably going “cuckoo, that girl really needs to get a life”J  


So to the point, why do I love the debugger so much? I love things that are black and white, my main interests are logic puzzles and billiards, if you get things wrong you know exactly why and there are strict rules for how you should do things.  Much like this the debugger tells things in black and white. If your process hangs you can spend weeks on end wondering if your process is hanging because a database query is taking too long or because your boss installed a flashy screensaver that takes 100% CPU. The debugger will tell the ruthless truth, whether you like it or not
J 


In my work there are a few topics that come up again and again so I decided that a blog might just be the best place to log all the tidbits that I gather along the way. 
 

One of the worst case scenarios when you debug is that you discover a problem that requires massive re-design of the application to resolve, and/or that the system is now in production and the servers go down and the server is mission critical.  Telling someone at that point that the problem could have been avoided if a different design had been chosen in the early stages of the project doesn’t do much to de-stress people, so some of the main points that I would like to impress on developers are: spend time learning the platform you are working with, spend time testing your system, spend time testing proofs of concept. It WILL pay off in the end. And!!! If you still get an unlucky break and your e-business goes down right in time for the x-mas rush, spend some time in advance on learning the basics of production level debugging so you don’t have to panic in the case of a failure.  


If you have some specific areas that you would like me to talk about, don’t hesitate to tell me…


Happy debugging! May the force be with you...  


 

  • I look forward to seeing what you have to say!
  • I am trying to learn to use windbg on a .NET 1.1 windows forms application written in C#.  Have you tried to set a breakpoint on a source line in C# and get windbg to stop at the breakpoint?  I cannot.  The windbg GUI lets me set a breakpoint, but I never hit it.  I can see the source file line hightlighted in red, and the breakpoint is listed.  After I set the breakpoint, and command the debugger to 'go', the next time it stops the process has exited.  When I try to type in the same breakpoint on the command line I get "Operation not supported by intergrated managed debugging".  I have SOS loaded.  Is it possible to set a breakpoint in a .cs file and get windbg to stop when it hits it?
  • I believe that SoftIce is much better choice than WinDbg. :o)
  • Windbg is not a managed debugger as such, so setting breakpoints on a source line is not going to work, but you can set breakpoints with sos using the sos.Bp command for example.

    If you need to step through managed code you are better off using a managed debugger. I have never used SoftIce, but visual studio or cordbg that comes with the SDK would be better choices.
  • It really is fun prowling around in the debugger. In my new job I'm showing people the power of windbg, and we've already solved a bundle of thorny issues with it. It's a really powerful instrument, and I am happy to have had the opportunity to learn it with you all. Keep up the great blog!
  • Congrats on your new job, saw that you moved to Germany... (assuming it's "the" Michael Stanton who wrote the initial sos.dll:))  and thanks for the many hours of help with hairy issues.

  • I wish I could work at Microsoft !
  • Hi Tess,

    I am a support professional professional in the ASP.NET group at Microsoft. I want to learn Debugging in depth and is very much impressed by your blogs..Your blogs are really awesome..

  • Hey Tess, I seem to remember that we didn't have much problems doing actual source level debuging for .NET via WinDbg  when I was working on Main Campus, but we did have a command (.cordll) that I wasn't able to get working latter on public versions of WinDbg. It could be that I just never gave it enough time to dig around. In any case, it would be interesting to hear about it, even if just as a curiosity -- to show what is doable.

  • Hey Tess,

    Iam very new in debugging, but iam doing my best, you seems to be more professional and good, so kindly your guidence required. Thanks

  • Hy Tess,

    It usualy rarely happen that female are doing programming but its great to see some one at this level of Hard rock aspect of development. :)

    Well, Could you please (after so much experience) list the set of tools and techniques for the peoples who have this in nature but haven't got chance working on debuging factor

    When i request tools its like a black smith who know what exactly he has and works for in his toolset wheather its just a bent nail.

    I know to debug is more of a nature but listing such tools + techniques + stretegies will help a lot to different peoples

  • Hi Umer,

    I believe you will find most of what you are looking for in the debugging labs (listed on the right side bar).  If you feel like this is not what you were looking for, let me know...

    Thanks

    Tess

  • Hi Tess,

    I've been working as a Software Engineer for about 10 years now having developed apps for a variety of platforms (mobile, windows, web etc). Yesterday, the first time in my career, I was tasked with troubleshooting a high memory issue in our teams ASP.NET app and was happy to come across your blog. Thanks to your tips, I've tracked it down to a severely fragmented heap and now have a new love for windbg. Just wanted to say a quick thanks!

    -Brian

  • Tess - You are doing an amazing work and have now inspired me to become an escalation engineer!

    You have great time management skills, inspite of being an escalation engineer you manage your time very well to keep your blog updated. Keep up the good work!

  • I join the fun club of you :)))

Page 1 of 2 (30 items) 12
Leave a Comment
  • Please add 4 and 5 and type the answer here:
  • Post