Debugger/DebugServer.py

branch
maintenance
changeset 6646
51eefa621de4
parent 6602
331ac8f99cf8
parent 6645
ad476851d7e0
child 6923
d062df8f1d9f
equal deleted inserted replaced
6603:77189681b787 6646:51eefa621de4
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 2
3 # Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> 3 # Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 # 4 #
5 5
6 """ 6 """
7 Module implementing the debug server. 7 Module implementing the debug server.
8 """ 8 """
230 "Python3VirtualEnv") == '' and sys.version_info[0] == 2: 230 "Python3VirtualEnv") == '' and sys.version_info[0] == 2:
231 self.clientType = 'Python2' 231 self.clientType = 'Python2'
232 232
233 self.lastClientType = '' 233 self.lastClientType = ''
234 self.__autoClearShell = False 234 self.__autoClearShell = False
235 self.__forProject = False
235 236
236 self.clientClearBreak.connect(self.__clientClearBreakPoint) 237 self.clientClearBreak.connect(self.__clientClearBreakPoint)
237 self.clientClearWatch.connect(self.__clientClearWatchPoint) 238 self.clientClearWatch.connect(self.__clientClearWatchPoint)
238 self.newConnection.connect(self.__newConnection) 239 self.newConnection.connect(self.__newConnection)
239 240
457 self.clientType = clType 458 self.clientType = clType
458 Preferences.Prefs.settings.setValue( 459 Preferences.Prefs.settings.setValue(
459 'DebugClient/Type', self.clientType) 460 'DebugClient/Type', self.clientType)
460 461
461 def startClient(self, unplanned=True, clType=None, forProject=False, 462 def startClient(self, unplanned=True, clType=None, forProject=False,
462 runInConsole=False, venvName=""): 463 runInConsole=False, venvName="", workingDir=None):
463 """ 464 """
464 Public method to start a debug client. 465 Public method to start a debug client.
465 466
466 @keyparam unplanned flag indicating that the client has died 467 @keyparam unplanned flag indicating that the client has died
467 @type bool 468 @type bool
471 @type bool 472 @type bool
472 @keyparam runInConsole flag indicating to start the debugger in a 473 @keyparam runInConsole flag indicating to start the debugger in a
473 console window 474 console window
474 @type bool 475 @type bool
475 @keyparam venvName name of the virtual environment to be used 476 @keyparam venvName name of the virtual environment to be used
477 @type str
478 @keyparam workingDir directory to start the debugger client in
476 @type str 479 @type str
477 """ 480 """
478 self.running = False 481 self.running = False
479 482
480 if not self.passive or not self.passiveClientExited: 483 if not self.passive or not self.passiveClientExited:
496 self.clientProcess.kill() 499 self.clientProcess.kill()
497 self.clientProcess.waitForFinished(1000) 500 self.clientProcess.waitForFinished(1000)
498 self.clientProcess.deleteLater() 501 self.clientProcess.deleteLater()
499 self.clientProcess = None 502 self.clientProcess = None
500 503
504 self.__forProject = forProject
501 self.__createDebuggerInterface() 505 self.__createDebuggerInterface()
502 if forProject: 506 if forProject:
503 project = e5App().getObject("Project") 507 project = e5App().getObject("Project")
504 if not project.isDebugPropertiesLoaded(): 508 if not project.isDebugPropertiesLoaded():
505 self.clientProcess, isNetworked, clientInterpreter = \ 509 self.clientProcess, isNetworked, clientInterpreter = \
506 self.debuggerInterface.startRemote( 510 self.debuggerInterface.startRemote(
507 self.serverPort(), runInConsole, venvName, 511 self.serverPort(), runInConsole, venvName,
508 self.__originalPathString) 512 self.__originalPathString, workingDir=workingDir)
509 else: 513 else:
510 self.clientProcess, isNetworked, clientInterpreter = \ 514 self.clientProcess, isNetworked, clientInterpreter = \
511 self.debuggerInterface.startRemoteForProject( 515 self.debuggerInterface.startRemoteForProject(
512 self.serverPort(), runInConsole, venvName, 516 self.serverPort(), runInConsole, venvName,
513 self.__originalPathString) 517 self.__originalPathString, workingDir=workingDir)
514 else: 518 else:
515 self.clientProcess, isNetworked, clientInterpreter = \ 519 self.clientProcess, isNetworked, clientInterpreter = \
516 self.debuggerInterface.startRemote( 520 self.debuggerInterface.startRemote(
517 self.serverPort(), runInConsole, venvName, 521 self.serverPort(), runInConsole, venvName,
518 self.__originalPathString) 522 self.__originalPathString, workingDir=workingDir)
519 523
520 if self.clientProcess: 524 if self.clientProcess:
521 self.clientProcess.readyReadStandardError.connect( 525 self.clientProcess.readyReadStandardError.connect(
522 self.__clientProcessError) 526 self.__clientProcessError)
523 self.clientProcess.readyReadStandardOutput.connect( 527 self.clientProcess.readyReadStandardOutput.connect(
1498 self.__passiveShutDown() 1502 self.__passiveShutDown()
1499 self.clientExit.emit(int(status), message) 1503 self.clientExit.emit(int(status), message)
1500 if Preferences.getDebugger("AutomaticReset") or (self.running and 1504 if Preferences.getDebugger("AutomaticReset") or (self.running and
1501 not self.debugging): 1505 not self.debugging):
1502 self.debugging = False 1506 self.debugging = False
1503 self.startClient(False) 1507 self.startClient(False, forProject=self.__forProject)
1504 if self.passive: 1508 if self.passive:
1505 self.__createDebuggerInterface("None") 1509 self.__createDebuggerInterface("None")
1506 self.signalClientOutput(self.tr('\nNot connected\n')) 1510 self.signalClientOutput(self.tr('\nNot connected\n'))
1507 self.signalClientStatement(False) 1511 self.signalClientStatement(False)
1508 self.running = False 1512 self.running = False

eric ide

mercurial