Skip to content

cymbol ¤

Add, load, show, edit, or delete symbols for custom structures.

For the generation of the symbols g++/gcc is being used under the hood.

In case of remote debugging a binary which is not native to your architecture it is advised to configure the 'gcc-config-path' config parameter to your own cross-platform gnu gcc compiled toolchain for your target architecture.

You are advised to configure the 'cymbol-editor' config parameter to the path of your favorite text editor. Otherwise cymbol exapnds $EDITOR and $VISUAL environment variables to find the path to the default text editor.

Functions:

Attributes:

P module-attribute ¤

P = ParamSpec('P')

T module-attribute ¤

T = TypeVar('T')

gcc_compiler_path module-attribute ¤

gcc_compiler_path = add_param(
    "gcc-compiler-path",
    "",
    "path to the gcc/g++ toolchain for generating imported symbols",
    param_class=PARAM_OPTIONAL_FILENAME,
)

cymbol_editor module-attribute ¤

cymbol_editor = add_param(
    "cymbol-editor",
    "",
    "path to the editor for editing custom structures",
    param_class=PARAM_OPTIONAL_FILENAME,
)

loaded_symbols module-attribute ¤

loaded_symbols: dict[str, str] = {}

pwndbg_cachedir module-attribute ¤

pwndbg_cachedir = cachedir('custom-symbols')

parser module-attribute ¤

parser = ArgumentParser(
    description="Add, show, load, edit, or delete custom structures in plain C."
)

unload_loaded_symbol ¤

unload_loaded_symbol(custom_structure_name: str) -> None

OnlyWhenStructFileExists ¤

OnlyWhenStructFileExists(
    func: _OnlyWhenStructFileExists,
) -> _OnlyWhenStructFileExists

generate_debug_symbols ¤

generate_debug_symbols(
    custom_structure_path: str,
    pwndbg_debug_symbols_output_file: str | None = None,
) -> str | None

add_custom_structure ¤

add_custom_structure(custom_structure_name: str) -> None

add_structure_from_header ¤

add_structure_from_header(
    header_file: str, custom_structure_name: str = None
) -> None

edit_custom_structure ¤

edit_custom_structure(
    custom_structure_name: str, custom_structure_path: str = ""
) -> None

remove_custom_structure ¤

remove_custom_structure(
    custom_structure_name: str, custom_structure_path: str = ""
) -> None

load_custom_structure ¤

load_custom_structure(
    custom_structure_name: str, custom_structure_path: str = ""
) -> None

show_custom_structure ¤

show_custom_structure(
    custom_structure_name: str, custom_structure_path: str = ""
) -> None

cymbol ¤

cymbol(
    add: str, file: str, remove: str, edit: str, load: str, show: str
) -> None