eric6/Debugger/DebuggerInterfacePython.py

branch
multi_processing
changeset 7409
1413bfe73d41
parent 7408
0d58e708f57b
child 7410
401791e6f50f
diff -r 0d58e708f57b -r 1413bfe73d41 eric6/Debugger/DebuggerInterfacePython.py
--- a/eric6/Debugger/DebuggerInterfacePython.py	Mon Feb 10 19:49:45 2020 +0100
+++ b/eric6/Debugger/DebuggerInterfacePython.py	Tue Feb 11 18:58:38 2020 +0100
@@ -547,6 +547,20 @@
                 self.debugServer.masterClientConnected()
             
             self.debugServer.initializeClient(debuggerId)
+            
+            # perform auto-continue except for master
+            if (
+                self.__autoContinue and
+                debuggerId != self.__master and
+                debuggerId not in self.__autoContinued
+            ):
+                self.__autoContinued.append(debuggerId)
+                QTimer.singleShot(
+                    0, lambda: self.remoteContinue(debuggerId))
+                # TODO: maybe the debugger ID should not be registered here but
+                # only in user_line. Seems the debugger stops in a frame
+                # outside of the debugged script and this continue moves it to
+                # the first line of the script.
     
     def __socketDisconnected(self, sock):
         """
@@ -560,6 +574,8 @@
                 del self.__connections[debuggerId]
                 if debuggerId == self.__master:
                     self.__master = None
+                if debuggerId in self.__autoContinued:
+                    self.__autoContinued.remove(debuggerId)
                 break
         else:
             if sock in self.__pendingConnections:
@@ -568,6 +584,7 @@
         if not self.__connections:
             # no active connections anymore
             self.debugServer.signalLastClientExited()
+            self.__autoContinued.clear()
     
     def getDebuggerIds(self):
         """
@@ -653,7 +670,8 @@
                                    self.__master)
     
     def remoteLoad(self, fn, argv, wd, traceInterpreter=False,
-                   autoContinue=True, autoFork=False, forkChild=False):
+                   autoContinue=True, autoFork=False, forkChild=False,
+                   enableMultiprocess=False):
         """
         Public method to load a new program to debug.
         
@@ -673,6 +691,9 @@
         @type bool
         @param forkChild flag indicating to debug the child after forking
         @type bool
+        @param enableMultiprocess flag indicating to perform multiprocess
+            debugging
+        @type bool
         """
         self.__autoContinue = autoContinue
         self.__scriptName = os.path.abspath(fn)
@@ -686,6 +707,7 @@
             "traceInterpreter": traceInterpreter,
             "autofork": autoFork,
             "forkChild": forkChild,
+            "multiprocess": enableMultiprocess,
         }, self.__master)
     
     def remoteRun(self, fn, argv, wd, autoFork=False, forkChild=False):

eric ide

mercurial