Skip to content

Commit

Permalink
debugger - fix display Address in ManagedAddress
Browse files Browse the repository at this point in the history
  • Loading branch information
BiancaIalangi committed Feb 6, 2025
1 parent bb04f6d commit f7cda20
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
4 changes: 4 additions & 0 deletions tools/rust-debugger/format-tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,7 @@ home = "0.5.2"

[workspace]
members = ["."]

[dependencies]
hex = "0.4"

15 changes: 15 additions & 0 deletions tools/rust-debugger/format-tests/src/format_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<u8>| {
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<DebugApi> =
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\"");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<multiversx_sc_scenario::api::impl_vh::debug_api::DebugApiBackend>"
ANY_TYPE = ".*"
SOME_OR_NONE = "(Some|None)"
Expand Down Expand Up @@ -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}"'

Expand Down

0 comments on commit f7cda20

Please sign in to comment.