]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Clean up handling of DAP not-stopped response
authorTom Tromey <tromey@adacore.com>
Thu, 30 Nov 2023 20:53:23 +0000 (13:53 -0700)
committerTom Tromey <tromey@adacore.com>
Mon, 11 Dec 2023 18:44:19 +0000 (11:44 -0700)
This patch introduces a new NotStoppedException type and changes the
DAP implementation of "not stopped" to use it.  I was already touching
some code in this area and I thought this looked a little cleaner.
This also has the advantage that we can now choose not to log the
exception -- previously I was sometimes a bit alarmed when seeing this
in the logs, even though it is harmless.

Reviewed-By: Kévin Le Gouguec <legouguec@adacore.com>
gdb/python/lib/gdb/dap/server.py

index ead911d11dabd0497fe0105906ac87e35f7d5697..d865dee31a8d2a52faadc195fd34122fab28ee19 100644 (file)
@@ -42,6 +42,12 @@ _commands = {}
 _server = None
 
 
+# A subclass of Exception that is used solely for reporting that a
+# request needs the inferior to be stopped, but it is not stopped.
+class NotStoppedException(Exception):
+    pass
+
+
 class Server:
     """The DAP server class."""
 
@@ -78,6 +84,9 @@ class Server:
             if body is not None:
                 result["body"] = body
             result["success"] = True
+        except NotStoppedException:
+            result["success"] = False
+            result["message"] = "notStopped"
         except BaseException as e:
             log_stack()
             result["success"] = False
@@ -169,7 +178,7 @@ def _check_not_running(func):
         from .events import inferior_running
 
         if inferior_running:
-            raise Exception("notStopped")
+            raise NotStoppedException()
         return func(*args, **kwargs)
 
     return check