Just like any software development company, the individual teams at Microsoft frequently find themselves needing to cut features for the sake of shipping their product. If we don't do this, an incurable and contageous mood altering phenomenon called needitnowosis develops in one or more disgruntled users but quickly spreads throughout the entire community. The only known treatment for this disease is phewweshippeditcillintm (Microsoft Corp) .
Many users simply recover from their symptoms for a few years before succombing to the symptoms again. Others, start to recover, only to fall into a worse condition called butwhataboutXfeaturism.
Oh I realize that not everyone has the sophisticated medical background I have, so in laymen's terms, “shipping“ becomes THE FEATURE all users request more than any other. Decisions have to be made as to what stays and goes so that shipping can be our only focus. Some users will wish our product had that feature X that didn't avoid the cut list.
Fortunately, Visual Studio 2003 sports an extensive automation model that can be used to “create“ that feature you might be missing. Of course, having to write more programs to do your development probably isn't at the top of your todo list. So I'd like to provide some useful macros for you to use as is or as a way to get you jump started.
With that, here's my first entry.
Breakpoint Groups
Recently, and internal developer at Microsoft asked if the debugger had any feature that would allow him to easily switch between a set of breakpoints for a single project. Unfortunately, there is no way to easily do that through any sort of user-interface mechanism. It would likely wind up in a feature called Breakpoint Groups that may someday get shipped. But all is not lost. By creating the following macros and aliases, a similar feature can be created. Better yet, if it doesn't quite suit your needs you can modify it to your heart's content.
Add the following two macros to the MyMacros project inside Visual Studio 2003. You can access the MyMacros project by:
Here's the macros! I hope you find these useful. If you make some cool modifications or come up with some other useful macros, feel free to post them here! Oh, remember that “Samples“ node I kinda ignored at step 2? You might want to check it out now too.
Sub TagEnabledBreakpoints(Optional ByRef strTag As String = "Tag1")
If (bps.Count > 0) Then Dim bp As EnvDTE.Breakpoint For Each bp In bps If (bp.Enabled = True) Then bp.Tag = strTag End If Next Else System.Windows.Forms.MessageBox.Show("Can't find any breakpoints to tag") End If