src/eric7/Debugger/DebuggerInterfacePython.py

branch
server
changeset 10630
552a790fd9bc
parent 10597
fbe93720ee9f
child 10636
24d9e6ff8111
--- a/src/eric7/Debugger/DebuggerInterfacePython.py	Tue Feb 27 15:05:53 2024 +0100
+++ b/src/eric7/Debugger/DebuggerInterfacePython.py	Fri Mar 08 15:30:23 2024 +0100
@@ -231,7 +231,7 @@
             # TODO change this once server environment definitions are supported
             startRemote = True
             venvName = self.debugServer.getEricServerEnvironmentString()
-            interpreter = ""
+            interpreter = ""  # use the interpreter of the server
         else:
             if not venvName:
                 venvName = Preferences.getDebugger("Python3VirtualEnv")
@@ -501,8 +501,6 @@
             and the name of the interpreter in case of a local execution
         @rtype tuple of (QProcess, bool, str)
         """
-        # TODO: 'startRemoteForProject()' - implement the 'startRemote' logic like
-        #       for 'startRemote'.
         global origPathEnv
 
         project = ericApp().getObject("Project")
@@ -525,21 +523,36 @@
             else ""
         )
 
-        if venvName and venvName != self.debugServer.getProjectEnvironmentString():
-            venvManager = ericApp().getObject("VirtualEnvManager")
-            interpreter = venvManager.getVirtualenvInterpreter(venvName)
-            execPath = venvManager.getVirtualenvExecPath(venvName)
+        if (
+            startRemote is True
+            or (
+                startRemote is None
+                and (
+                    venvName == self.debugServer.getEricServerEnvironmentString()
+                    or self.__ericServerDebugging
+                )
+            )
+        ) and ericApp().getObject("EricServer").isServerConnected():
+            # TODO change this once server environment definitions are supported
+            startRemote = True
+            venvName = self.debugServer.getEricServerEnvironmentString()
+            interpreter = ""  # use the interpreter of the server
         else:
-            venvName = project.getProjectVenv()
-            execPath = project.getProjectExecPath()
-            interpreter = project.getProjectInterpreter()
-        if interpreter == "":
-            EricMessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr("""<p>No suitable Python3 environment configured.</p>"""),
-            )
-            return None, self.__isNetworked, ""
+            if venvName and venvName != self.debugServer.getProjectEnvironmentString():
+                venvManager = ericApp().getObject("VirtualEnvManager")
+                interpreter = venvManager.getVirtualenvInterpreter(venvName)
+                execPath = venvManager.getVirtualenvExecPath(venvName)
+            else:
+                venvName = project.getProjectVenv()
+                execPath = project.getProjectExecPath()
+                interpreter = project.getProjectInterpreter()
+            if interpreter == "":
+                EricMessageBox.critical(
+                    None,
+                    self.tr("Start Debugger"),
+                    self.tr("""<p>No suitable Python3 environment configured.</p>"""),
+                )
+                return None, self.__isNetworked, ""
 
         self.__inShutdown = False
 
@@ -603,6 +616,27 @@
                 return None, self.__isNetworked, ""
 
         # TODO: add server debugging for projects
+        elif startRemote and self.__ericServerDebuggerInterface is not None:
+            # debugging via an eric-ide server
+            self.translate = self.__ericServerTranslation
+            self.__ericServerDebugging = True
+
+            args = []
+            if noencoding:
+                args.append(noencoding)
+            if multiprocessEnabled:
+                args.append(multiprocessEnabled)
+            if callTraceOptimization:
+                args.append(callTraceOptimization)
+            self.__ericServerDebuggerInterface.startClient(
+                interpreter,
+                originalPathString,
+                args,
+                workingDir=workingDir,
+            )
+            self.__startedVenv = venvName
+
+            return None, self.__isNetworked, ""
 
         else:
             # local debugging code below

eric ide

mercurial