summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tools/idle/Debugger.py43
1 files changed, 35 insertions, 8 deletions
diff --git a/Tools/idle/Debugger.py b/Tools/idle/Debugger.py
index 0ef1583..0b2e01c 100644
--- a/Tools/idle/Debugger.py
+++ b/Tools/idle/Debugger.py
@@ -36,7 +36,8 @@ class Debugger(bdb.Bdb):
def user_return(self, frame, rv):
# XXX show rv?
- self.interaction(frame)
+ ##self.interaction(frame)
+ pass
def user_exception(self, frame, info):
self.interaction(frame, info)
@@ -76,7 +77,7 @@ class Debugger(bdb.Bdb):
self.bstack.grid(row=0, column=0)
if not self.vsource:
self.__class__.vsource = BooleanVar(top)
- self.vsource.set(1)
+ ##self.vsource.set(1)
self.bsource = Checkbutton(cframe,
text="Source", command=self.show_source, variable=self.vsource)
self.bsource.grid(row=0, column=1)
@@ -88,7 +89,7 @@ class Debugger(bdb.Bdb):
self.blocals.grid(row=1, column=0)
if not self.vglobals:
self.__class__.vglobals = BooleanVar(top)
- self.vglobals.set(1)
+ ##self.vglobals.set(1)
self.bglobals = Checkbutton(cframe,
text="Globals", command=self.show_globals, variable=self.vglobals)
self.bglobals.grid(row=1, column=1)
@@ -96,7 +97,7 @@ class Debugger(bdb.Bdb):
self.status = Label(top, anchor="w")
self.status.pack(anchor="w")
self.error = Label(top, anchor="w")
- self.error.pack(anchor="w")
+ self.error.pack(anchor="w", fill="x")
self.errorbg = self.error.cget("background")
#
self.fstack = Frame(top, height=1)
@@ -150,7 +151,7 @@ class Debugger(bdb.Bdb):
stack, i = self.get_stack(self.frame, tb)
sv.load_stack(stack, i)
#
- self.show_variables()
+ self.show_variables(1)
#
if self.vsource.get():
self.sync_source_line()
@@ -248,7 +249,7 @@ class Debugger(bdb.Bdb):
self.fglobals['height'] = 1
self.show_variables()
- def show_variables(self):
+ def show_variables(self, force=0):
lv = self.localsviewer
gv = self.globalsviewer
frame = self.frame
@@ -260,6 +261,32 @@ class Debugger(bdb.Bdb):
if lv and gv and ldict is gdict:
ldict = None
if lv:
- lv.load_dict(ldict)
+ lv.load_dict(ldict, force)
if gv:
- gv.load_dict(gdict)
+ gv.load_dict(gdict, force)
+
+ def set_breakpoint_here(self, edit):
+ text = edit.text
+ filename = edit.io.filename
+ if not filename:
+ text.bell()
+ return
+ lineno = int(float(text.index("insert")))
+ msg = self.set_break(filename, lineno)
+ if msg:
+ text.bell()
+ return
+ text.tag_add("BREAK", "insert linestart", "insert lineend +1char")
+
+ # A literal copy of Bdb.set_break() without the print statement at the end
+ def set_break(self, filename, lineno, temporary=0, cond = None):
+ import linecache # Import as late as possible
+ line = linecache.getline(filename, lineno)
+ if not line:
+ return 'That line does not exist!'
+ if not self.breaks.has_key(filename):
+ self.breaks[filename] = []
+ list = self.breaks[filename]
+ if not lineno in list:
+ list.append(lineno)
+ bp = Breakpoint(filename, lineno, temporary, cond)