Skip to content

vmmap ¤

Functions:

Attributes:

vmmap_cache_param module-attribute ¤

vmmap_cache_param = add_param(
    "vmmap-cache",
    _vmmap_cache_default,
    "cache the memory map for the whole run on slow targets (macOS)",
    help_docstring="On macOS, fetching the process memory map via LLDB is slow (every region requires a Mach IPC round-trip). When this is on, the memory map is fetched once per launch/attach and reused across stops until the program exits, you re-launch/attach, or you run `vmmap --refresh`. Defaults to on when running pwndbg-lldb on a macOS host, off everywhere else; the option is still exposed on every (host, debugger) combo so you can flip it on for unusual setups (e.g. remote-debugging a macOS target from Linux).",
    param_class=PARAM_BOOLEAN,
)

clear_persistent_cache ¤

clear_persistent_cache() -> None

Drop the persistent memory map cache (next read will re-fetch).

cache_status_text ¤

cache_status_text() -> str | None

Short status string describing the persistent cache state, or None when there's no cache to talk about. Used by the vmmap command and the context legend to surface that the displayed map may be stale.

Callers should wrap the returned text in brackets and apply pwndbg.color.message.hint(...) so it visually stands out from surrounding text.

get_memory_map ¤

get_memory_map() -> MemoryMap

get ¤

get() -> tuple[Page, ...]

find ¤

find(address: int | Value | None) -> Page | None

addr_region_start ¤

addr_region_start(address: int | Value) -> int | None

Let's define a "region" as contiguous memory compromised of memory mappings which all have the same object file name. Also referred to as "File (Base)" by xinfo.

Returns:

  • int | None

    The start of the memory region this address belongs to, or None if the address is not mapped.

named_region_start ¤

named_region_start(mapping_name: str, exact_match: bool = True) -> int | None

Returns the lowest address which is mapped with mapping_name.

This works both for object file names and stuff like "[heap]", but note that not all mappings with the same name are necessarily contiguous (especially if they aren't backed by an object file).

Will not invoke vmmap_explore.

If exact_match is True looks for exact path match, otherwise will match the os.path.basename()s.