Debugger: Emulation Service

This service plugin provides emulation to the Trace Manager and provides actions for launching emulated traces from programs, i.e., without requiring a connected debugger. Please note that "pure emulation" of a target program, while it doesn't require a platform to execute the target natively, it typically does require significant state initialization and dependency stubbing, except in limited circumstances.

Actions

Emulate Program

This action is available whenever a program is active. It will create a new trace suitable for "pure emulation" of the current program starting at the current address. More precisely, it will open a new blank trace, initializes it with the current program's memory map, allocates a stack, and creates a thread whose program counter is initialized to the current address and whose registers are initialized to the register context at the current address. Optionally, any other initialization can be done by manually modifying the trace in the UI, or using a script. The trace and/or p-code stepping actions can then be used to emulate.

Add Emulated Thread

This action is available whenever a "pure emulation" trace is active. It spawns a new thread in the current trace suitable for emulating starting at the current address. More precisely, it allocates another stack and creates a new thread whose program counter is initialized to the current address and whose registers are initialized to the register context at the current address. Optionally, other registers can be initialized via the UI or a script. The new thread is activated so that stepping actions will affect it by default.

Configure Emulator

This action is always available. It lists emulators available for configuration. Selecting one will set it as the current emulator. The next time emulation is activated, it will use the selected emulator.