[wingide-users] breakpoint at end of function

Tom Stambaugh tms at zeetix.com
Mon Aug 16 17:01:51 MDT 2010


Don't forget that breakpoints on "pass" statements don't necessarily 
pause the interpreter (sometimes, but not always).

I define a "doNothing_" method at the root of the class hierarchy, and 
define it to take a single comment string as its argument:

def doNothing_(self, aCommentString):
   pass

I frequently put this at the end of a method (especially those without 
an explicit return), add an explanatory comment, and set the breakpoint 
at the doNothing_call:

def someMethod(self):
   self.doCoolThing()
   # blah blah blah
   self.doNothing_("Did I really do a cool thing?")

Now, it reliably stops. The comment helps me remember why I cared.

This is an example of a code pattern I have called "Marker Method". When 
I'm in the middle of active development on multiple classes, I can put 
in a (limited) number of marker method calls and then use the 
search-in-files method to find them later.

Here are some marker methods I use:

def underConstruction(self):
    # either pass or halt, depending on your choice

def shouldNotCall(self):
    """I use this to catch obsolete methods that I'm replacing."""
    self.error_('Should not call')

self deprecated_(self, aCommentString):
    """Uses aCommentString to identify the new method."""
    pass

This pattern is suggested by Smalltalk's "subclassResponsibility" (or 
"implementedBySubclass") method.

Thx,
Tom

Wingware Support wrote:
> Mitchell L Model wrote:
>> I think this has come up before but I can't find it: is there a way to 
>> set a breakpoint at the end of a function (other than adding a pass 
>> statement to it and putting the breakpoint there) and is there a way 
>> to "watch" the return value (it's great that it's included in Stack 
>> Data, but sometimes I want it in a Watch 
>> display)._________________________________________________
> 
> No, there isn't a way to break on return yet.  In many cases you can of 
> course set a breakpoint on the last line of code and hit Step Over once.
> 
> Also, it appears watching the return doesn't work either.
> 
> Both of these would be good enhancements so I'll add them to our list if 
> not already there.
> 
> Thanks,
> 

-- 
Tom Stambaugh, Founder
Zeetix LLC/ZeeGuide/ZeeForge
63 Boston Ave
Somerville, MA 02144
617-776-8934 (land)
617-721-0446 (cell)


More information about the wingide-users mailing list