src/eric7/Debugger/DebugServer.py

branch
server
changeset 10561
be23a662d709
parent 10555
08e853c0c77b
child 10564
0de57f082daa
--- 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

eric ide

mercurial