--- a/src/eric7/Debugger/DebugServer.py Sat Feb 10 11:28:58 2024 +0100 +++ b/src/eric7/Debugger/DebugServer.py Sun Feb 11 18:35:44 2024 +0100 @@ -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) @@ -494,7 +497,7 @@ venvName="", workingDir="", configOverride=None, - startRemote=False + startRemote=None ): """ Public method to start a debug client. @@ -516,7 +519,7 @@ (defaults to None) @type dict (optional) @param startRemote flag indicating to start the client via an eric-ide server - (defaults to False) + (defaults to None) @type bool (optional) """ self.running = False @@ -578,7 +581,7 @@ self.__originalPathString, workingDir=workingDir, configOverride=configOverride, - # TODO: add 'startRemote' parameter + startRemote=startRemote, ) else: ( @@ -611,6 +614,7 @@ self.__autoClearShell = False self.remoteBanner() elif startRemote: + self.__ericServerDebugging = True self.remoteBanner() else: if clType and self.lastClientType: @@ -735,11 +739,23 @@ 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): """ @@ -910,12 +926,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): """ @@ -1097,6 +1114,7 @@ runInConsole=runInConsole, venvName=venvName, configOverride=configOverride, + startRemote=FileSystemUtilities.isRemoteFileName(fn), ) self.setCallTraceEnabled("", enableCallTrace) @@ -1117,6 +1135,7 @@ self.__restoreWatchpoints() self.__restoreNoDebugList() + # TODO: 'remoteRun' - add startRemote logic like in 'remoteLoad' def remoteRun( self, venvName, @@ -1195,6 +1214,7 @@ self.debugging = False self.running = True + # TODO: 'remoteCoverage' - add startRemote logic like in 'remoteLoad' def remoteCoverage( self, venvName, @@ -1277,6 +1297,7 @@ self.debugging = False self.running = True + # TODO: 'remoteProfile' - add startRemote logic like in 'remoteLoad' def remoteProfile( self, venvName, @@ -1919,6 +1940,7 @@ self.signalClientOutput(self.tr("\nNot connected\n")) self.signalClientStatement(False, "") self.running = False + self.__ericServerDebugging = False def signalClientClearBreak(self, filename, lineno, debuggerId): """ @@ -2236,6 +2258,9 @@ 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 """ # TODO: make this more elaborate once server environments definitions # are supported