diff -r b0d14cba79b1 -r 552a790fd9bc src/eric7/Debugger/DebuggerInterfacePython.py --- 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