# Replayer debugger

The replayer debugger is a pseudo-debugger used to replay recorded traces.

The replayer debugger supports replaying traces recorded with any of the currently supported debuggers, ranging from local Linux or win32 debuggers to remote GDB targets. Currently supported targets include x86, x86\_64, ARM, MIPS and PPC.

To use the replayer debugger you will need first to record a trace by enabling [instruction tracing](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#instruction-tracing), [function tracing](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#function-tracing) or [basic block tracing](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#basic-block-tracing) with another debugger. Then, after [loading](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#select-trace) a recorded trace in the [Tracing window](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#tracing-window), select the replay debugger from the debugger's dropdown list and start the debugger normally as you would do with any other debugger.

One of the advantages of the replay debugger module over re-executing the debuggee is that in the replayer debugger it is possible to step not only forward, but also backwards, making it easier to analyze what happened during the execution of the recorded trace.

There are two types of traces that can be replayed: instruction level traces or partial traces. Instruction level traces are recorded by enabling [instruction tracing](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#instruction-tracing) and partial traces are recorded using either [function tracing](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#function-tracing) or [basic block](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/debugger/1443.md#basic-block-tracing) tracing. When a trace is recorded with instruction tracing enabled all register values are saved. With basic block or function level tracing only the instruction pointer is saved. Additionally, in basic block tracing the register values are also saved when the last instruction of a basic block is reached or a call in the middle of a basic block is about to be executed.

The replayer debugger module adds a new menu item: Debugger, Step Back command. It can be used to step back to the previous instruction when replaying a recorded trace.

[Additional IDC functions provided by the replayer debugger](https://github.com/HexRaysSA/docs/blob/main/user-guide/debugger/remote-debugging/710.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hex-rays.com/9.0/user-guide/debugger/remote-debugging/replayer-debugger.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
