Why I love the debugger…



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…  

 

Comments (31)

  1. jmstall says:

    I look forward to seeing what you have to say!

  2. acedog says:

    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?

  3. Igor says:

    I believe that SoftIce is much better choice than WinDbg. :o)

  4. Tess says:

    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.

  5. Michael Stanton says:

    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!

  6. Tess says:

    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.

  7. Eka Siswanto says:

    I wish I could work at Microsoft !

  8. Ani says:

    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..

  9. ZX says:

    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.

  10. Danish Khan says:

    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

  11. Umer says:

    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

  12. Tess says:

    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

  13. Brian says:

    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

  14. NN says:

    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!

  15. I join the fun club of you :)))

  16. gxh973121 says:

    i will study debug from now on,and from your blog too

  17. Fidel Leon says:

    Youh there! Just impressed with your work with the leaking AJAX library, so I’d stay here for a while, if you concede.

  18. Suman says:

    Hi Tess

    It’s really good that you are sharing your treasures with everyone. Great work. Keep it up

  19. Ben says:

    You are every nerds fantasy, can you provide a closer picture of you?

  20. Ekin says:

    Yeah I think so, too. A closer picture..

  21. Eric says:

    Just discovered your blog, excited to read it :-)

  22. I haven’t used SoftIce since around 1995. It was too expensive and cost a fortune to upgrade anytime the operating system changed. Also lots of false positives when trying to find memory leaks. I could be wrong, but I think NuMega is just greedy – browsing around the net it doesn’t look like anything has changed. So thanks for getting me excited about debuggers again.  Just because I like to dis them whenever possible I also won’t deal with Symantec and McAfee – indifference to small users among other things. You wouldn’t believe (or maybe you would) some experiences I’ve had with Norton Anti-Virus between about 1983 and 1998 which is when I swore never to deal with Symantec again. McAfee is just doofus.

  23. I want to apologize for my loutish, stupid remarks. Still inapproriate on this forum, they were meant as a consumer, not as a programmer. I’d work for any of those companies in a heartbeat, if I could make the cut, which I couldn’t – probably. I’m including my URL so you’ll be more convinced it’s the real me, but please Don’t Look At Me!!

    Seriously, I do apologize.

  24. Not Crazy says:

    Is it just me, or is Tess smokin’??

  25. ilovetess says:

    It’s not just you – Tess is smokin!

    Tess,

    Ever consider more pictures of yourself on your blog?  Perhaps a Microsoft-sponsored "Gorgeous Geeks of Microsoft" Calendar?

    😀

  26. NancyScuba says:

    I loved the first part of your answer to the question in the 3rd paragraph.

    I think I found my call in life…

  27. Homer says:

    Hi Tess,

    Just listened to the podcast you did with Scott H.  Very fascinating stuff, I look forward to working through the labs.

    Homer

  28. John Bartley says:

    I was a COBOL programmer and, like you, loved debugging. I’m gonna try to learn this windbg stuff someday.

    You are a great thinker!

  29. Shalabh says:

    I am learning Windbg and want to lean more about its power, I have found this blog and it seems it is the right start. Your posts are really useful, Thanks ! for the great posts.

  30. Markus says:

    Very nice and interesting indeed. Will dive deeper…

  31. Carl-Erik Kopseng says:

    Ten years later and your blog is still being referenced as the goto place when dealing with debugging :-)