From 6ceee0a85f9c2d5c80748fcdbbc8ab1323f795b5 Mon Sep 17 00:00:00 2001 From: Rich Chiodo false Date: Tue, 30 Apr 2024 17:14:47 -0700 Subject: [PATCH] Fix stack_trace_len --- src/debugpy/server/adapters.py | 3 ++- src/debugpy/server/tracing/__init__.py | 10 +--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/debugpy/server/adapters.py b/src/debugpy/server/adapters.py index 47823a5f..2dc94771 100644 --- a/src/debugpy/server/adapters.py +++ b/src/debugpy/server/adapters.py @@ -290,7 +290,8 @@ class Adapter: if thread is None: raise request.isnt_valid(f'Unknown thread with "threadId":{thread_id}') - stop_frame = None if levels is None else start_frame + levels + stop_frame = thread.stack_trace_len() if levels == () or levels == 0 else start_frame + levels + log.info(f"stackTrace info {start_frame} {stop_frame}") frames = None try: frames = islice(thread.stack_trace(), start_frame, stop_frame) diff --git a/src/debugpy/server/tracing/__init__.py b/src/debugpy/server/tracing/__init__.py index 05c4ab2a..0e6f1ed5 100644 --- a/src/debugpy/server/tracing/__init__.py +++ b/src/debugpy/server/tracing/__init__.py @@ -261,15 +261,7 @@ class Thread: """ Returns the total count of frames in this thread's stack. """ - try: - with _cvar: - python_frame = self.current_frame - except ValueError: - raise ValueError(f"Can't get frames for inactive Thread({self.id})") - try: - return len(tuple(traceback.walk_stack(python_frame))) - finally: - del python_frame + return len(list(self.stack_trace())) def stack_trace(self) -> Iterable["StackFrame"]: """