diff -r 2b015db9761a -r ba20efe10336 src/eric7/Debugger/DebugServer.py --- a/src/eric7/Debugger/DebugServer.py Sun Jun 02 09:51:47 2024 +0200 +++ b/src/eric7/Debugger/DebugServer.py Wed Jul 03 09:20:41 2024 +0200 @@ -18,6 +18,7 @@ from eric7 import Preferences from eric7.EricWidgets import EricMessageBox from eric7.EricWidgets.EricApplication import ericApp +from eric7.SystemUtilities import FileSystemUtilities from . import DebugClientCapabilities from .BreakPointModel import BreakPointModel @@ -241,6 +242,8 @@ self.__autoClearShell = False self.__forProject = False + self.__ericServerDebugging = False + self.clientClearBreak.connect(self.__clientClearBreakPoint) self.clientClearWatch.connect(self.__clientClearWatchPoint) self.newConnection.connect(self.__newConnection) @@ -492,28 +495,32 @@ forProject=False, runInConsole=False, venvName="", - workingDir=None, + workingDir="", configOverride=None, + startRemote=None, ): """ Public method to start a debug client. - @param unplanned flag indicating that the client has died - @type bool - @param clType type of client to be started - @type str - @param forProject flag indicating a project related action - @type bool + @param unplanned flag indicating that the client has died (defaults to True) + @type bool (optional) + @param clType type of client to be started (defaults to None) + @type str (optional) + @param forProject flag indicating a project related action (defaults to False) + @type bool (optional) @param runInConsole flag indicating to start the debugger in a - console window - @type bool - @param venvName name of the virtual environment to be used - @type str - @param workingDir directory to start the debugger client in - @type str - @param configOverride dictionary containing the global config override - data - @type dict + console window (defaults to False) + @type bool (optional) + @param venvName name of the virtual environment to be used (defaults to "") + @type str (optional) + @param workingDir directory to start the debugger client in (defaults to "") + @type str (optional) + @param configOverride dictionary containing the global config override data + (defaults to None) + @type dict (optional) + @param startRemote flag indicating to start the client via an eric-ide server + (defaults to None) + @type bool (optional) """ self.running = False @@ -560,6 +567,7 @@ self.__originalPathString, workingDir=workingDir, configOverride=configOverride, + startRemote=startRemote, ) else: if not venvName and project.getProjectData(dataKey="EMBEDDED_VENV"): @@ -576,6 +584,7 @@ self.__originalPathString, workingDir=workingDir, configOverride=configOverride, + startRemote=startRemote, ) else: ( @@ -589,6 +598,7 @@ self.__originalPathString, workingDir=workingDir, configOverride=configOverride, + startRemote=startRemote, ) if self.clientProcess: @@ -606,6 +616,14 @@ elif self.__autoClearShell: self.__autoClearShell = False self.remoteBanner() + elif startRemote: + self.__ericServerDebugging = True + if self.lastClientType != self.clientType: + self.lastClientType = self.clientType + self.remoteBanner() + elif self.__autoClearShell: + self.__autoClearShell = False + self.remoteBanner() else: if clType and self.lastClientType: self.__setClientType(self.lastClientType) @@ -729,11 +747,20 @@ if (fn, lineno) in self.__reportedBreakpointIssues: self.__reportedBreakpointIssues.remove((fn, lineno)) - self.remoteBreakpoint(debuggerId, fn, lineno, True, cond, temp) - if not enabled: - self.__remoteBreakpointEnable(debuggerId, fn, lineno, False) - if ignorecount: - self.__remoteBreakpointIgnore(debuggerId, fn, lineno, ignorecount) + if ( + self.__ericServerDebugging + and FileSystemUtilities.isRemoteFileName(fn) + ) or ( + not self.__ericServerDebugging + and FileSystemUtilities.isPlainFileName(fn) + ): + self.remoteBreakpoint(debuggerId, fn, lineno, True, cond, temp) + if not enabled: + self.__remoteBreakpointEnable(debuggerId, fn, lineno, False) + if ignorecount: + self.__remoteBreakpointIgnore( + debuggerId, fn, lineno, ignorecount + ) def __makeWatchCondition(self, cond, special): """ @@ -904,12 +931,13 @@ def isClientProcessUp(self): """ - Public method to check, if the debug client process is up. + Public method to check, if the debug client process is up or we are + doing debugging via the eric-ide server. @return flag indicating a running debug client process @rtype bool """ - return self.clientProcess is not None + return self.clientProcess is not None or self.__ericServerDebugging def __newConnection(self): """ @@ -1091,6 +1119,7 @@ runInConsole=runInConsole, venvName=venvName, configOverride=configOverride, + startRemote=FileSystemUtilities.isRemoteFileName(fn), ) self.setCallTraceEnabled("", enableCallTrace) @@ -1181,6 +1210,7 @@ runInConsole=runInConsole, venvName=venvName, configOverride=configOverride, + startRemote=FileSystemUtilities.isRemoteFileName(fn), ) self.remoteEnvironment(env) @@ -1263,6 +1293,7 @@ runInConsole=runInConsole, venvName=venvName, configOverride=configOverride, + startRemote=FileSystemUtilities.isRemoteFileName(fn), ) self.remoteEnvironment(env) @@ -1345,6 +1376,7 @@ runInConsole=runInConsole, venvName=venvName, configOverride=configOverride, + startRemote=FileSystemUtilities.isRemoteFileName(fn), ) self.remoteEnvironment(env) @@ -1913,6 +1945,7 @@ self.signalClientOutput(self.tr("\nNot connected\n")) self.signalClientStatement(False, "") self.running = False + self.__ericServerDebugging = False def signalClientClearBreak(self, filename, lineno, debuggerId): """ @@ -2224,3 +2257,12 @@ except KeyError: # The project object is not present return "" + + def getEricServerEnvironmentString(self): + """ + Public method to get the string for an eric-ide server environment. + + @return string for the eric-ide server environment + @rtype str + """ + return "eric-ide Server"