> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.chainstack.com/feedback

```json
{
  "path": "/reference/arbitrum-debug-and-trace-rpc-methods",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Debug and trace | Arbitrum

> Arbitrum debug and trace JSON-RPC methods — use debug_* for post-Nitro blocks and arbtrace_* for pre-Nitro blocks to inspect execution traces.

Developers can access the debug and trace tools on the Arbitrum blockchain with the following methods:

<CardGroup>
  <Card title="debug_accountRange" href="/reference/arbitrum-debug-accountrange" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_dumpBlock" href="/reference/arbitrum-debug-dumpblock" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getAccessibleState" href="/reference/arbitrum-debug-getaccessiblestate" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getModifiedAccountsByHash" href="/reference/arbitrum-debug-getmodifiedaccountsbyhash" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getModifiedAccountsByNumber" href="/reference/arbitrum-debug-getmodifiedaccountsbynumber" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getRawBlock" href="/reference/arbitrum-debug-getrawblock" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getRawHeader" href="/reference/arbitrum-debug-getrawheader" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getRawReceipts" href="/reference/arbitrum-debug-getrawreceipts" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_getRawTransaction" href="/reference/arbitrum-debug-getrawtransaction" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_intermediateRoots" href="/reference/arbitrum-debug-intermediateroots" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_preimage" href="/reference/arbitrum-debug-preimage" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_printBlock" href="/reference/arbitrum-debug-printblock" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_traceBadBlock" href="/reference/arbitrum-debug-tracebadblock" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_traceBlockByHash" href="/reference/arbitrum-debug-traceblockbyhash" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_traceBlockByNumber" href="/reference/arbitrum-debug-traceblockbynumber" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_traceCall" href="/reference/arbitrum-debug-tracecall" icon="angle-right" iconType="solid" horizontal />

  <Card title="debug_traceTransaction" href="/reference/arbitrum-debug-tracetransaction" icon="angle-right" iconType="solid" horizontal />
</CardGroup>

Arbitrum uses the Nitro client (a Geth fork) and does not support the `trace_*` namespace. Instead, use the `arbtrace_*` methods for pre-Nitro blocks and `debug_*` methods for post-Nitro blocks.

<Info>
  Blocks older than 22,207,815 were added to the chain before the Nitro migration and cannot be queried with Geth `debug_*` methods. Starting from block 22,207,815, Arbitrum migrated to Nitro which made Geth `debug_*` methods available for newer blocks.
</Info>

Use the following `arbtrace_*` methods for calling on blocks prior to 22,207,815:

<CardGroup>
  <Card title="arbtrace_block" href="/reference/arbitrum-arbtrace-block" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_call" href="/reference/arbitrum-arbtrace-call" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_callMany" href="/reference/arbitrum-arbtrace-callmany" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_filter" href="/reference/arbitrum-arbtrace-filter" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_get" href="/reference/arbitrum-arbtrace-get" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_replayBlockTransactions" href="/reference/arbitrum-arbtrace-replayblocktransactions" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_replayTransaction" href="/reference/arbitrum-arbtrace-replaytransaction" icon="angle-right" iconType="solid" horizontal />

  <Card title="arbtrace_transaction" href="/reference/arbitrum-arbtrace-transaction" icon="angle-right" iconType="solid" horizontal />
</CardGroup>

<Check>
  ### Get your own node endpoint today

  [Start for free](https://console.chainstack.com/) and get your app to production levels immediately. No credit card required.

  You can sign up with your GitHub, X, Google, or Microsoft account.
</Check>

## Pre-built tracers

<Info>
  ### Custom tracers are available on customized dedicated nodes only

  Custom JavaScript tracers outside of the ones listed below are available as customized solutions on the [Enterprise plan](https://chainstack.com/pricing/) on [dedicated nodes](/docs/dedicated-node).
</Info>

Developers can customize the type of tracing using various debug and trace methods, and there are numerous pre-built tracers available to choose from. Here is a list of the pre-built tracers that can be utilized:

### `4byteTracer`

This tracer looks for function signatures that are 4 bytes long during contract execution and gathers information about the method identifiers and the size of the provided data. This information can be helpful in matching a signature against the data size.

### `callTracer`

This tracer extracts information about all internal calls made by a transaction, providing visibility into how contracts interact with each other.

### `prestateTracer`

This tracer returns sufficient information about an account to create a local execution of the transaction. This procedure runs the given transaction again and monitors every aspect of the state that is modified or accessed during execution.

### `noopTracer`

This tracer does nothing but respond with a blank object. This a no operations tracer for testing setup.

### `stylusTracer`

This tracer is for debugging Stylus contracts by tracing calls between the WasmVM and EVM, allowing developers to fully understand their Stylus transactions.
