Making breakpoints functional in IDLE on Windows

Edward K. Ream edream at tds.net
Mon Feb 25 16:18:59 EST 2002


Hello all,

This morning Guido confirmed that breakpoints do not, in fact, work in
IDLE on any Windows machine(!)  The problem has to do with the case of
file names.

Here is how make breakpoints functional in IDLE.  The fix required 2
additional lines of code.  Both lines are marked with # EKR.

Insert 1 line in Python\Tools\idle\Debugger.py.  Change:

def set_break(self, filename, lineno, temporary=0, cond = None):
    import linecache # Import as late as possible
    line = linecache.getline(filename, lineno)
    ...

to:

def set_break(self, filename, lineno, temporary=0, cond = None):
    import linecache # Import as late as possible
    filename = self.canonic(filename) # EKR
    line = linecache.getline(filename, lineno)
    ...
    
Insert 1 line in Python\Lib\bdb.py.  Change:

def canonic(self, filename):
        canonic = self.fncache.get(filename)
        if not canonic:
            canonic = os.path.abspath(filename)
            self.fncache[filename] = canonic
        return canonic
To:

def canonic(self, filename):
        canonic = self.fncache.get(filename)
        if not canonic:
            canonic = os.path.abspath(filename)
            canonic = os.path.normcase(canonic) # EKR
            self.fncache[filename] = canonic
        return canonic

This works for me on Windows XP and Python 2.1.  I'll let you know if
any
problems come up.

Edward
--------------------------------------------------------------------
Edward K. Ream   email:  edream at tds.net
Leo: Literate Editor with Outlines
Leo: http://personalpages.tds.net/~edream/front.html
--------------------------------------------------------------------



More information about the Python-list mailing list