Handlers set the report display of an argument through ctx.args, by
parameter name where the signature is usable on x86 and x64 and by slot
index otherwise. argv holds the raw slots, and the transitional copy of
argv writes in handle_import_func is gone. Variadic handlers use
ctx.args.clear() and append(); delegating handlers pass ctx, so the
inner handler's displays apply to the outer call.
The display setter ignores values that are not strings, such as None
from a failed constant lookup or the raw pointer of a NULL string
argument.
API hooks get raw argv. WindowsEmulator.get_api_args() returns the
arguments of the hooked call as the report shows them, and the
emu_dll and dbgview examples use it.
Remove get_emu_path/set_emu_path, get_sections, get_ptr_size,
get_base, and get_image_size from PeFile (common.py) and their
equivalents from RuntimeModule (loaders.py). Replace ~65 call
sites across 14 files with direct attribute access.
MemMap had 11 getter/setter methods that simply returned or assigned
a public attribute. Remove them all and replace ~60 call sites across
10 files with direct property access.
Integrate the udbserver library to expose a GDB Remote Serial Protocol
server on the emulated Unicorn instance. When --gdb is passed, the
emulator pauses before the first instruction and waits for a GDB client
to connect. Also removes the legacy get_logger()/logger= pattern that
was passing logger instances through constructors (Speakeasy.__init__
never accepted a logger parameter, so these were latent TypeErrors).