Skip to content

Commit 9f69321

Browse files
authored
Improve error response message parsing for DAP evaluate requests. (#168430)
Updated the evaluate handler to check for DAP ErrorResponse bodies, which are used to display user errors if a request fails. This was updated in PR #167720 This should fix https://lab.llvm.org/buildbot/#/builders/163
1 parent a618895 commit 9f69321

File tree

1 file changed

+12
-2
lines changed
  • cross-project-tests/debuginfo-tests/dexter/dex/debugger

1 file changed

+12
-2
lines changed

cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ def send_message(self, payload: dict) -> int:
335335
self._proc.stdin.flush()
336336
return self.seq
337337

338+
@staticmethod
338339
def _handle_message(
339340
message: dict, debugger_state: DAPDebuggerState, logger: Logger
340341
):
@@ -419,6 +420,7 @@ def _handle_message(
419420
request_seq = message["request_seq"]
420421
debugger_state.set_response(request_seq, message)
421422

423+
@staticmethod
422424
def _colorize_dap_message(message: dict) -> dict:
423425
colorized_message = copy.deepcopy(message)
424426
if colorized_message["type"] == "event":
@@ -432,6 +434,7 @@ def _colorize_dap_message(message: dict) -> dict:
432434
colorized_message["command"] = f"<y>{colorized_message['command']}</>"
433435
return colorized_message
434436

437+
@staticmethod
435438
def _read_dap_output(
436439
proc: subprocess.Popen,
437440
debugger_state: DAPDebuggerState,
@@ -454,6 +457,7 @@ def _read_dap_output(
454457
DAP._handle_message(message, debugger_state, logger)
455458
buffer = rest[content_length:]
456459

460+
@staticmethod
457461
def _read_dap_err(proc: subprocess.Popen, logger: Logger):
458462
while True:
459463
err: bytes = proc.stderr.readline()
@@ -930,10 +934,16 @@ def evaluate_expression(self, expression, frame_idx=0) -> ValueIR:
930934
)
931935
)
932936
eval_response = self._await_response(eval_req_id)
937+
result: str = ""
933938
if not eval_response["success"]:
934-
result: str = eval_response["message"]
939+
if eval_response["body"].get("error", None):
940+
result = eval_response["body"]["error"]["format"]
941+
elif eval_response["message"]:
942+
result = eval_response["message"]
943+
else:
944+
result = "<unable to evaluate expression>"
935945
else:
936-
result: str = eval_response["body"]["result"]
946+
result = eval_response["body"]["result"]
937947
type_str = eval_response["body"].get("type")
938948

939949
return self._evaluate_result_value(expression, result, type_str)

0 commit comments

Comments
 (0)