From f7cda204aea9cee07b06fa227bec8de080c875cc Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 6 Feb 2025 11:54:47 +0200 Subject: [PATCH] debugger - fix display Address in ManagedAddress --- tools/rust-debugger/format-tests/Cargo.toml | 4 ++++ .../format-tests/src/format_tests.rs | 15 +++++++++++++++ .../multiversx_sc_lldb_pretty_printers.py | 11 ++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 439fec0ccf..68281231b1 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -26,3 +26,7 @@ home = "0.5.2" [workspace] members = ["."] + +[dependencies] +hex = "0.4" + diff --git a/tools/rust-debugger/format-tests/src/format_tests.rs b/tools/rust-debugger/format-tests/src/format_tests.rs index 4cdfc56dd7..f2d9ff8d93 100644 --- a/tools/rust-debugger/format-tests/src/format_tests.rs +++ b/tools/rust-debugger/format-tests/src/format_tests.rs @@ -60,6 +60,21 @@ fn main() { let test_address: TestAddress = TestAddress::new("owner-test"); push!(to_check, test_address, "\"address:owner-test\""); + let hex_esdt_safe: [u8; 32] = + hex::decode(b"00000000000000000500657364742d736166655f5f5f5f5f5f5f5f5f5f5f5f5f") + .unwrap_or_else(|_| panic!("Unable to decode hexadecimal address")) + .try_into() + .unwrap_or_else(|address: Vec| { + panic!( + "Invalid length: expected 32 bytes but got {}", + address.len() + ) + }); + let hex_esdt_safe_address = Address::new(hex_esdt_safe); + let esdt_safe_managed_address: ManagedAddress = + ManagedAddress::from(hex_esdt_safe_address); + push!(to_check, esdt_safe_managed_address, "\"esdt-safe_____________\" - (32) 0x00000000000000000500657364742d736166655f5f5f5f5f5f5f5f5f5f5f5f5f"); + let test_token_identifier: TestTokenIdentifier = TestTokenIdentifier::new("TEST-123456"); push!(to_check, test_token_identifier, "\"str:TEST-123456\""); diff --git a/tools/rust-debugger/pretty-printers/multiversx_sc_lldb_pretty_printers.py b/tools/rust-debugger/pretty-printers/multiversx_sc_lldb_pretty_printers.py index 13ae0db969..e5499c0fbf 100644 --- a/tools/rust-debugger/pretty-printers/multiversx_sc_lldb_pretty_printers.py +++ b/tools/rust-debugger/pretty-printers/multiversx_sc_lldb_pretty_printers.py @@ -7,6 +7,7 @@ import re import struct +VM_TYPE_ADDRESS = "0000000050" DEBUG_API_TYPE = "multiversx_sc_scenario::api::impl_vh::vm_hooks_api::VMHooksApi" ANY_TYPE = ".*" SOME_OR_NONE = "(Some|None)" @@ -189,9 +190,17 @@ def ascii_to_string(buffer_iterator: Iterable[int]) -> str: """ return ''.join(map(chr, buffer_iterator)) +def buffer_to_bytes_without_vm_type(buffer: lldb.value) -> List[int]: + buffer_ints = buffer_to_bytes(buffer) + buffer_vm_type = buffer_to_bytes(VM_TYPE_ADDRESS) + + if buffer_ints[:len(buffer_vm_type)] == buffer_vm_type: + return buffer_ints[len(buffer_vm_type):] + + return buffer_ints def buffer_as_string(buffer: lldb.value) -> str: - buffer_ints = buffer_to_bytes(buffer) + buffer_ints = buffer_to_bytes_without_vm_type(buffer) buffer_string = ascii_to_string(buffer_ints) return f'"{buffer_string}"'