]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-120144: Disable the CALL event when possible to achieve zero overhead pdb (#131390)
authorTian Gao <gaogaotiantian@hotmail.com>
Fri, 21 Mar 2025 00:31:55 +0000 (20:31 -0400)
committerGitHub <noreply@github.com>
Fri, 21 Mar 2025 00:31:55 +0000 (20:31 -0400)
Lib/bdb.py
Misc/NEWS.d/next/Library/2025-03-18-02-11-33.gh-issue-120144.dBLFkI.rst [new file with mode: 0644]

index d32a05f59ad69287416f93e8171f1e456767b7b0..ba5cacc2a54cbc52fe61594219f596a001da36f3 100644 (file)
@@ -342,7 +342,12 @@ class Bdb:
             self.botframe = frame.f_back # (CT) Note that this may also be None!
             return self.trace_dispatch
         if not (self.stop_here(frame) or self.break_anywhere(frame)):
-            # No need to trace this function
+            # We already know there's no breakpoint in this function
+            # If it's a next/until/return command, we don't need any CALL event
+            # and we don't need to set the f_trace on any new frame.
+            # If it's a step command, it must either hit stop_here, or skip the
+            # whole module. Either way, we don't need the CALL event here.
+            self.disable_current_event()
             return # None
         # Ignore call events in generator except when stepping.
         if self.stopframe and frame.f_code.co_flags & GENERATOR_AND_COROUTINE_FLAGS:
diff --git a/Misc/NEWS.d/next/Library/2025-03-18-02-11-33.gh-issue-120144.dBLFkI.rst b/Misc/NEWS.d/next/Library/2025-03-18-02-11-33.gh-issue-120144.dBLFkI.rst
new file mode 100644 (file)
index 0000000..35d577e
--- /dev/null
@@ -0,0 +1 @@
+Disable ``CALL`` event in :mod:`bdb` in ``monitoring`` backend when we don't need any new events on the code object to get a better performance.