aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/idlelib/Debugger.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib/Debugger.py')
-rw-r--r--Lib/idlelib/Debugger.py33
1 files changed, 22 insertions, 11 deletions
diff --git a/Lib/idlelib/Debugger.py b/Lib/idlelib/Debugger.py
index 04eea3235b6..ed66084e91c 100644
--- a/Lib/idlelib/Debugger.py
+++ b/Lib/idlelib/Debugger.py
@@ -1,7 +1,7 @@
import os
import bdb
import types
-from Tkinter import *
+from tkinter import *
from idlelib.WindowList import ListedToplevel
from idlelib.ScrolledList import ScrolledList
from idlelib import macosxSupport
@@ -253,7 +253,8 @@ class Debugger:
if self.vsource.get():
self.sync_source_line()
- def show_frame(self, (frame, lineno)):
+ def show_frame(self, stackitem):
+ frame, lineno = stackitem
self.frame = frame
self.show_variables()
@@ -311,8 +312,7 @@ class Debugger:
def load_breakpoints(self):
"Load PyShellEditorWindow breakpoints into subprocess debugger"
- pyshell_edit_windows = self.pyshell.flist.inversedict.keys()
- for editwin in pyshell_edit_windows:
+ for editwin in self.pyshell.flist.inversedict:
filename = editwin.io.filename
try:
for lineno in editwin.breakpoints:
@@ -348,8 +348,7 @@ class StackViewer(ScrolledList):
funcname = code.co_name
import linecache
sourceline = linecache.getline(filename, lineno)
- import string
- sourceline = string.strip(sourceline)
+ sourceline = sourceline.strip()
if funcname in ("?", "", None):
item = "%s, line %d: %s" % (modname, lineno, sourceline)
else:
@@ -413,8 +412,8 @@ class NamespaceViewer:
height = 20*len(dict) # XXX 20 == observed height of Entry widget
self.master = master
self.title = title
- import repr
- self.repr = repr.Repr()
+ import reprlib
+ self.repr = reprlib.Repr()
self.repr.maxstring = 60
self.repr.maxother = 60
self.frame = frame = Frame(master)
@@ -440,15 +439,27 @@ class NamespaceViewer:
return
subframe = self.subframe
frame = self.frame
- for c in subframe.children.values():
+ for c in list(subframe.children.values()):
c.destroy()
self.dict = None
if not dict:
l = Label(subframe, text="None")
l.grid(row=0, column=0)
else:
- names = dict.keys()
- names.sort()
+ #names = sorted(dict)
+ ###
+ # Because of (temporary) limitations on the dict_keys type (not yet
+ # public or pickleable), have the subprocess to send a list of
+ # keys, not a dict_keys object. sorted() will take a dict_keys
+ # (no subprocess) or a list.
+ #
+ # There is also an obscure bug in sorted(dict) where the
+ # interpreter gets into a loop requesting non-existing dict[0],
+ # dict[1], dict[2], etc from the RemoteDebugger.DictProxy.
+ ###
+ keys_list = dict.keys()
+ names = sorted(keys_list)
+ ###
row = 0
for name in names:
value = dict[name]