src/eric7/Debugger/DebuggerInterfacePython.py

branch
server
changeset 10630
552a790fd9bc
parent 10597
fbe93720ee9f
child 10636
24d9e6ff8111
equal deleted inserted replaced
10629:b0d14cba79b1 10630:552a790fd9bc
229 ) 229 )
230 ) and ericApp().getObject("EricServer").isServerConnected(): 230 ) and ericApp().getObject("EricServer").isServerConnected():
231 # TODO change this once server environment definitions are supported 231 # TODO change this once server environment definitions are supported
232 startRemote = True 232 startRemote = True
233 venvName = self.debugServer.getEricServerEnvironmentString() 233 venvName = self.debugServer.getEricServerEnvironmentString()
234 interpreter = "" 234 interpreter = "" # use the interpreter of the server
235 else: 235 else:
236 if not venvName: 236 if not venvName:
237 venvName = Preferences.getDebugger("Python3VirtualEnv") 237 venvName = Preferences.getDebugger("Python3VirtualEnv")
238 if venvName == self.debugServer.getProjectEnvironmentString(): 238 if venvName == self.debugServer.getProjectEnvironmentString():
239 project = ericApp().getObject("Project") 239 project = ericApp().getObject("Project")
499 @type bool (optional) 499 @type bool (optional)
500 @return client process object, a flag to indicate a network connection 500 @return client process object, a flag to indicate a network connection
501 and the name of the interpreter in case of a local execution 501 and the name of the interpreter in case of a local execution
502 @rtype tuple of (QProcess, bool, str) 502 @rtype tuple of (QProcess, bool, str)
503 """ 503 """
504 # TODO: 'startRemoteForProject()' - implement the 'startRemote' logic like
505 # for 'startRemote'.
506 global origPathEnv 504 global origPathEnv
507 505
508 project = ericApp().getObject("Project") 506 project = ericApp().getObject("Project")
509 if not project.isDebugPropertiesLoaded(): 507 if not project.isDebugPropertiesLoaded():
510 return None, self.__isNetworked, "" 508 return None, self.__isNetworked, ""
523 "--call-trace-optimization" 521 "--call-trace-optimization"
524 if Preferences.getDebugger("PythonCallTraceOptimization") 522 if Preferences.getDebugger("PythonCallTraceOptimization")
525 else "" 523 else ""
526 ) 524 )
527 525
528 if venvName and venvName != self.debugServer.getProjectEnvironmentString(): 526 if (
529 venvManager = ericApp().getObject("VirtualEnvManager") 527 startRemote is True
530 interpreter = venvManager.getVirtualenvInterpreter(venvName) 528 or (
531 execPath = venvManager.getVirtualenvExecPath(venvName) 529 startRemote is None
530 and (
531 venvName == self.debugServer.getEricServerEnvironmentString()
532 or self.__ericServerDebugging
533 )
534 )
535 ) and ericApp().getObject("EricServer").isServerConnected():
536 # TODO change this once server environment definitions are supported
537 startRemote = True
538 venvName = self.debugServer.getEricServerEnvironmentString()
539 interpreter = "" # use the interpreter of the server
532 else: 540 else:
533 venvName = project.getProjectVenv() 541 if venvName and venvName != self.debugServer.getProjectEnvironmentString():
534 execPath = project.getProjectExecPath() 542 venvManager = ericApp().getObject("VirtualEnvManager")
535 interpreter = project.getProjectInterpreter() 543 interpreter = venvManager.getVirtualenvInterpreter(venvName)
536 if interpreter == "": 544 execPath = venvManager.getVirtualenvExecPath(venvName)
537 EricMessageBox.critical( 545 else:
538 None, 546 venvName = project.getProjectVenv()
539 self.tr("Start Debugger"), 547 execPath = project.getProjectExecPath()
540 self.tr("""<p>No suitable Python3 environment configured.</p>"""), 548 interpreter = project.getProjectInterpreter()
541 ) 549 if interpreter == "":
542 return None, self.__isNetworked, "" 550 EricMessageBox.critical(
551 None,
552 self.tr("Start Debugger"),
553 self.tr("""<p>No suitable Python3 environment configured.</p>"""),
554 )
555 return None, self.__isNetworked, ""
543 556
544 self.__inShutdown = False 557 self.__inShutdown = False
545 558
546 self.__ericServerDebugging = False 559 self.__ericServerDebugging = False
547 560
601 else: 614 else:
602 # remote shell command is missing 615 # remote shell command is missing
603 return None, self.__isNetworked, "" 616 return None, self.__isNetworked, ""
604 617
605 # TODO: add server debugging for projects 618 # TODO: add server debugging for projects
619 elif startRemote and self.__ericServerDebuggerInterface is not None:
620 # debugging via an eric-ide server
621 self.translate = self.__ericServerTranslation
622 self.__ericServerDebugging = True
623
624 args = []
625 if noencoding:
626 args.append(noencoding)
627 if multiprocessEnabled:
628 args.append(multiprocessEnabled)
629 if callTraceOptimization:
630 args.append(callTraceOptimization)
631 self.__ericServerDebuggerInterface.startClient(
632 interpreter,
633 originalPathString,
634 args,
635 workingDir=workingDir,
636 )
637 self.__startedVenv = venvName
638
639 return None, self.__isNetworked, ""
606 640
607 else: 641 else:
608 # local debugging code below 642 # local debugging code below
609 debugClient = project.getDebugProperty("DEBUGCLIENT") 643 debugClient = project.getDebugProperty("DEBUGCLIENT")
610 if not bool(debugClient) or not os.path.exists(debugClient): 644 if not bool(debugClient) or not os.path.exists(debugClient):

eric ide

mercurial