[llvm] [Dexter] Temporarily print DAP logs on specific exception (PR #157130)
Orlando Cazalet-Hyams via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 5 08:46:40 PDT 2025
https://github.com/OCHyams created https://github.com/llvm/llvm-project/pull/157130
Temporarily print the DAP log if this fails to aid debugging a buildbot failure that doesn't reproduce easily.
See #157090 description for motivation
>From fa9ca0fad7d3992409bf5e759e23af18758ab81b Mon Sep 17 00:00:00 2001
From: Orlando Cazalet-Hyams <orlando.hyams at sony.com>
Date: Fri, 5 Sep 2025 16:45:02 +0100
Subject: [PATCH] [Dexter] Temporarily print DAP logs on specific exception
---
.../debuginfo-tests/dexter/dex/debugger/DAP.py | 4 ++++
.../dexter/dex/debugger/lldb/LLDB.py | 13 ++++++++++---
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py
index 4e64f880487f5..6f94ff34e6b21 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py
@@ -10,6 +10,7 @@
import abc
from collections import defaultdict
import copy
+import io
import json
import os
import shlex
@@ -50,6 +51,7 @@ def __init__(self, context):
self.prefix_recv: str = "<-"
self.out_handle = None
self.open = False
+ self.text = io.StringIO() # In-process copy of the message log.
self.lock = threading.Lock()
def _custom_enter(self):
@@ -91,6 +93,8 @@ def write_message(self, message: dict, incoming: bool):
message_str = json.dumps(
self._colorize_dap_message(message), indent=self.indent
).replace("\\u001b", "\033")
+
+ self.text.write(f"{prefix} {message_str}\n")
if self.out_handle is not None and self.open:
with self.lock:
self.out_handle.write(f"{prefix} {message_str}\n")
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
index fa10b4914d45c..fe5bf76382b44 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
@@ -430,9 +430,16 @@ def _post_step_hook(self):
trace_response = self._await_response(trace_req_id)
if not trace_response["success"]:
raise DebuggerException("failed to get stack frames")
- stackframes = trace_response["body"]["stackFrames"]
- path = stackframes[0]["source"]["path"]
- addr = stackframes[0]["instructionPointerReference"]
+ try:
+ stackframes = trace_response["body"]["stackFrames"]
+ path = stackframes[0]["source"]["path"]
+ addr = stackframes[0]["instructionPointerReference"]
+ except KeyError as e:
+ # Temporarily print the DAP log if this fails to aid debugging
+ # a buildbot failure that doesn't reproduce easily.
+ print(self.message_logger.text.getvalue())
+ raise e
+
if any(
self._debugger_state.bp_addr_map.get(self.dex_id_to_dap_id[dex_bp_id])
== addr
More information about the llvm-commits
mailing list