From b125d5131970ea2b7aeead64bea8a3e9ddb34282 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:31:44 +0000 Subject: [PATCH 1/6] Initial plan From c71c3efb9cbab991ff575823c016f8e9c13ec604 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:35:18 +0000 Subject: [PATCH 2/6] Initial analysis of __repr__ implementations needed Co-authored-by: xusheng6 <94503187+xusheng6@users.noreply.github.com> --- .../debuggercontroller.cpython-312.pyc | Bin 0 -> 89846 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 api/python/__pycache__/debuggercontroller.cpython-312.pyc diff --git a/api/python/__pycache__/debuggercontroller.cpython-312.pyc b/api/python/__pycache__/debuggercontroller.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49084a0d962caf538fcb9c0ff284838f9ff5a916 GIT binary patch literal 89846 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 HnlAefV0}!G literal 0 HcmV?d00001 From 161c9a01a48fe7d750c7de6e28625e0c250aad8f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:41:03 +0000 Subject: [PATCH 3/6] Add and improve __repr__ methods for debugger objects Co-authored-by: xusheng6 <94503187+xusheng6@users.noreply.github.com> --- .gitignore | 2 + .../debuggercontroller.cpython-312.pyc | Bin 89846 -> 0 bytes api/python/debuggercontroller.py | 57 +++++++++++++++++- 3 files changed, 56 insertions(+), 3 deletions(-) delete mode 100644 api/python/__pycache__/debuggercontroller.cpython-312.pyc diff --git a/.gitignore b/.gitignore index cdd35713..8318da0f 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,8 @@ core/adapters/LLDB.framework /test/binaries/Darwin-arm64-signed/ /test/binaries/Darwin-x86_64-signed/ test/__pycache__ +api/python/__pycache__ +*/__pycache__/ /build /artifacts diff --git a/api/python/__pycache__/debuggercontroller.cpython-312.pyc b/api/python/__pycache__/debuggercontroller.cpython-312.pyc deleted file mode 100644 index 49084a0d962caf538fcb9c0ff284838f9ff5a916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89846 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 HnlAefV0}!G diff --git a/api/python/debuggercontroller.py b/api/python/debuggercontroller.py index 351550dd..198c35c3 100644 --- a/api/python/debuggercontroller.py +++ b/api/python/debuggercontroller.py @@ -56,7 +56,7 @@ def __setattr__(self, name, value): raise AttributeError(f"attribute '{name}' is read only") def __repr__(self): - return f"" + return f"" class DebugThread: @@ -140,7 +140,7 @@ def __setattr__(self, name, value): raise AttributeError(f"attribute '{name}' is read only") def __repr__(self): - return f"" + return f"" class DebugRegister: @@ -257,7 +257,8 @@ def __setattr__(self, name, value): raise AttributeError(f"attribute '{name}' is read only") def __repr__(self): - return f"" + enabled_str = "enabled" if self.enabled else "disabled" + return f"" class ModuleNameAndOffset: @@ -305,6 +306,9 @@ def __setattr__(self, name, value): except AttributeError: raise AttributeError(f"attribute '{name}' is read only") + def __repr__(self): + return f"" + class DebugFrame: """ @@ -373,6 +377,9 @@ def __init__(self, reason: DebugStopReason, last_active_thread: int, exit_code: self.exit_code = exit_code self.data = data + def __repr__(self): + return f"" + class ErrorEventData: """ @@ -386,6 +393,9 @@ def __init__(self, error: str, data): self.error = error self.data = data + def __repr__(self): + return f"" + class TargetExitedEventData: """ @@ -397,6 +407,9 @@ class TargetExitedEventData: def __init__(self, exit_code: int): self.exit_code = exit_code + def __repr__(self): + return f"" + class StdOutMessageEventData: """ @@ -408,6 +421,11 @@ class StdOutMessageEventData: def __init__(self, message: str): self.message = message + def __repr__(self): + # Truncate long messages for readability + msg = self.message[:50] + "..." if len(self.message) > 50 else self.message + return f"" + class DebuggerEventData: """ @@ -434,6 +452,25 @@ def __init__(self, target_stopped_data: TargetStoppedEventData, self.exit_data = exit_data self.message_data = message_data + def __repr__(self): + # Show only the data that's not None for better readability + parts = [] + if self.target_stopped_data is not None: + parts.append(f"stopped={self.target_stopped_data.reason}") + if self.error_data is not None: + parts.append(f"error='{self.error_data.error[:30]}..'" if len(self.error_data.error) > 30 else f"error='{self.error_data.error}'") + if self.absolute_address: + parts.append(f"abs_addr={self.absolute_address:#x}") + if self.relative_address: + parts.append(f"rel_addr={self.relative_address}") + if self.exit_data is not None: + parts.append(f"exit_code={self.exit_data.exit_code}") + if self.message_data is not None: + msg = self.message_data.message[:20] + "..." if len(self.message_data.message) > 20 else self.message_data.message + parts.append(f"msg='{msg}'") + + return f"" + class DebuggerEvent: """ @@ -447,6 +484,9 @@ def __init__(self, type: DebuggerEventType, data: DebuggerEventData): self.type = type self.data = data + def __repr__(self): + return f"" + DebuggerEventCallback = Callable[['DebuggerEvent'], None] @@ -1602,3 +1642,14 @@ def __ne__(self, other): def __hash__(self): return hash(ctypes.addressof(self.handle.contents)) + + def __repr__(self): + try: + # Try to get meaningful info about the controller state + connected = "connected" if self.is_connected else "disconnected" + running = "running" if self.is_running else "stopped" + exec_path = getattr(self, 'executable_path', 'unknown') + return f"" + except: + # Fallback to basic representation if we can't get state info + return f"" From eb4b0b19cd75f631125add9c7c3aeb90f9d118d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 10:01:22 +0000 Subject: [PATCH 4/6] Fix syntax errors and enhance __repr__ methods per PR feedback Co-authored-by: xusheng6 <94503187+xusheng6@users.noreply.github.com> --- api/python/debuggercontroller.py | 54 ++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/api/python/debuggercontroller.py b/api/python/debuggercontroller.py index 198c35c3..986aa3ca 100644 --- a/api/python/debuggercontroller.py +++ b/api/python/debuggercontroller.py @@ -131,7 +131,7 @@ def __ne__(self, other): return not (self == other) def __hash__(self): - return hash((self.name, self.short_name, self.address. self.size, self.loaded)) + return hash((self.name, self.short_name, self.address, self.size, self.loaded)) def __setattr__(self, name, value): try: @@ -174,7 +174,7 @@ def __ne__(self, other): return not (self == other) def __hash__(self): - return hash((self.name, self.value, self.width. self.index, self.hint)) + return hash((self.name, self.value, self.width, self.index, self.hint)) def __setattr__(self, name, value): try: @@ -203,7 +203,26 @@ def __init__(self, handle): dbgcore.BNDebuggerFreeRegisters(registers, count.value) def __repr__(self) -> str: - return self.regs.__repr__() + if not self.regs: + return "" + + # Show registers in a more readable format + reg_entries = [] + # Sort registers by name for consistent output + for name in sorted(self.regs.keys()): + reg = self.regs[name] + hint_str = f" ({reg.hint})" if reg.hint else "" + reg_entries.append(f"{name}={reg.value:#x}{hint_str}") + + # Limit the number of registers shown to avoid overly long output + if len(reg_entries) > 8: + shown_regs = reg_entries[:8] + remaining = len(reg_entries) - 8 + reg_list = ", ".join(shown_regs) + f", ... (+{remaining} more)" + else: + reg_list = ", ".join(reg_entries) + + return f"" def __getitem__(self, name): if name not in self.regs: @@ -248,7 +267,7 @@ def __ne__(self, other): return not (self == other) def __hash__(self): - return hash((self.module, self.offset, self.address. self.enabled)) + return hash((self.module, self.offset, self.address, self.enabled)) def __setattr__(self, name, value): try: @@ -1645,11 +1664,28 @@ def __hash__(self): def __repr__(self): try: - # Try to get meaningful info about the controller state - connected = "connected" if self.is_connected else "disconnected" - running = "running" if self.is_running else "stopped" - exec_path = getattr(self, 'executable_path', 'unknown') - return f"" + # Basic connection and status info + connected = "connected" if self.connected else "disconnected" + running = "running" if self.running else "stopped" + + # Debug adapter name + adapter_name = self.adapter_type + + # Determine if local or remote debugging + remote_host = self.remote_host + remote_port = self.remote_port + + if remote_host and remote_port > 0: + # Remote debugging + debugging_type = f"remote {remote_host}:{remote_port}" + else: + # Local debugging + debugging_type = "local" + + # Executable path + exec_path = self.executable_path or "unknown" + + return f"" except: # Fallback to basic representation if we can't get state info return f"" From bb6e48c2cae0e89e819679cc891fbb7801f04b61 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 03:44:13 +0000 Subject: [PATCH 5/6] Show all registers in DebugRegisters __repr__ without truncation Co-authored-by: xusheng6 <94503187+xusheng6@users.noreply.github.com> --- api/python/debuggercontroller.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/api/python/debuggercontroller.py b/api/python/debuggercontroller.py index 986aa3ca..5ebbb7db 100644 --- a/api/python/debuggercontroller.py +++ b/api/python/debuggercontroller.py @@ -214,13 +214,8 @@ def __repr__(self) -> str: hint_str = f" ({reg.hint})" if reg.hint else "" reg_entries.append(f"{name}={reg.value:#x}{hint_str}") - # Limit the number of registers shown to avoid overly long output - if len(reg_entries) > 8: - shown_regs = reg_entries[:8] - remaining = len(reg_entries) - 8 - reg_list = ", ".join(shown_regs) + f", ... (+{remaining} more)" - else: - reg_list = ", ".join(reg_entries) + # Show all registers + reg_list = ", ".join(reg_entries) return f"" From 66315d18af91f86205eed0913d67493e6cf60012 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 03:48:07 +0000 Subject: [PATCH 6/6] Remove enabled/disabled status from DebugBreakpoint __repr__ Co-authored-by: xusheng6 <94503187+xusheng6@users.noreply.github.com> --- api/python/debuggercontroller.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/python/debuggercontroller.py b/api/python/debuggercontroller.py index 5ebbb7db..0174581f 100644 --- a/api/python/debuggercontroller.py +++ b/api/python/debuggercontroller.py @@ -271,8 +271,7 @@ def __setattr__(self, name, value): raise AttributeError(f"attribute '{name}' is read only") def __repr__(self): - enabled_str = "enabled" if self.enabled else "disabled" - return f"" + return f"" class ModuleNameAndOffset: