From d35acc5c64898f7e034179de66bb7ae9edf0c160 Mon Sep 17 00:00:00 2001 From: Orlando Cazalet-Hyams Date: Thu, 7 Aug 2025 14:43:40 +0100 Subject: [PATCH 1/2] [Dexter] add get_pc --- .../dexter/dex/debugger/DebuggerBase.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py index dd5cc5d3f0230..81c71c7243b2f 100644 --- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py +++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py @@ -233,6 +233,16 @@ def frames_below_main(self): def evaluate_expression(self, expression, frame_idx=0) -> ValueIR: pass + def get_pc(self, frame_idx: int = 0) -> str: + """Get the current PC in frame at frame_idx depth. + frame_idx 0 is the current function. + """ + r = self.evaluate_expression("$pc", frame_idx) + assert r.could_evaluate + assert not r.is_optimized_away + assert not r.is_irretrievable + return r.value + def _external_to_debug_path(self, path): if not self.options.debugger_use_relative_paths: return path From e72a3ca42ceb6ec85d808d3bb908600d046e68f9 Mon Sep 17 00:00:00 2001 From: Orlando Cazalet-Hyams Date: Wed, 27 Aug 2025 14:39:00 +0100 Subject: [PATCH 2/2] assert->exception --- .../debuginfo-tests/dexter/dex/debugger/DebuggerBase.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py index 81c71c7243b2f..f8bee4ecb4231 100644 --- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py +++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerBase.py @@ -238,9 +238,10 @@ def get_pc(self, frame_idx: int = 0) -> str: frame_idx 0 is the current function. """ r = self.evaluate_expression("$pc", frame_idx) - assert r.could_evaluate - assert not r.is_optimized_away - assert not r.is_irretrievable + if not r.could_evaluate or r.is_optimized_away or r.is_irretrievable: + raise DebuggerException( + "evaluating '$pc' failed - possibly unsupported by the debugger" + ) return r.value def _external_to_debug_path(self, path):