diff --git a/Lib/idlelib/Debugger.py b/Lib/idlelib/Debugger.py
index 3ad6a83..5f85182 100644
--- a/Lib/idlelib/Debugger.py
+++ b/Lib/idlelib/Debugger.py
@@ -15,7 +15,7 @@
     def user_line(self, frame):
 
         co_filename = frame.f_code.co_filename
-        co_name = frame.f_code.co_name
+##        co_name = frame.f_code.co_name
 
         ## print>>sys.__stderr__, "*function: ", frame.f_code.co_name
         ## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
@@ -23,28 +23,26 @@
         ## print>>sys.__stderr__, "*name: ", co_name
         ## print>>sys.__stderr__, "*function: ", frame.f_locals.get(co_name,None)
 
-        try:
-            # XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
-            # XXX currently running function. If the function has an
-            #     attribute called "DebuggerStepThrough", prevent the debugger
-            #     from stepping through Idle code. The following doesn't work
-            #     in instance methods. Hard coded some workarounds.
-
-            func = frame.f_locals[co_name]
-            if getattr(func, "DebuggerStepThrough", 0):
-                print "XXXX DEBUGGER STEPPING THROUGH"
-                self.set_step()
-                return
-        except:
-            pass
+##         try:
+##             # XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
+##             # XXX currently running function. If the function has an
+##             #     attribute called "DebuggerStepThrough", prevent the debugger
+##             #     from stepping through Idle code. The following doesn't work
+##             #     in instance methods. Hard coded some workarounds.
+##             func = frame.f_locals[co_name]
+##             if getattr(func, "DebuggerStepThrough", 0):
+##                 print "XXXX DEBUGGER STEPPING THROUGH"
+##                 self.set_step()
+##                 return
+##         except:
+##             pass
 
         # workaround for the problem above
-        if co_filename in (r'.\rpc.py', 'rpc.py','<string>'):
-            self.set_step()
-            return
-        if co_filename.endswith('threading.py'):
-            self.set_step()
-            return
+        exclude = ('rpc.py', 'threading.py', '<string>')
+        for rpcfile in exclude:
+            if co_filename.count(rpcfile):
+                self.set_step()
+                return
         message = self.__frame2message(frame)
         self.gui.interaction(message, frame)
 
