> ## 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/ethereum-debug-trace-rpc-methods",
  "feedback": "Description of the issue"
}
```

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

</AgentInstructions>

# Debug and Trace | Ethereum

> Ethereum debug and trace API methods for inspecting smart contract execution, analyzing gas usage, and tracing transactions on Chainstack nodes.

<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>

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

<CardGroup cols={2}>
  <Card title="debug_traceBlockByHash" icon="angle-right" iconType="solid" href="/reference/ethereum-traceblockbyhash" horizontal />

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

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

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

  <Card title="trace_transaction" icon="angle-right" iconType="solid" href="/reference/ethereum-trace_transaction" horizontal />

  <Card title="trace_block" icon="angle-right" iconType="solid" href="/reference/ethereum-trace_block" horizontal />
</CardGroup>

## Pre-built JavaScript-based 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.

## Custom JavaScript tracers

JavaScript-based tracers can be created through various approaches, allowing them to interact with transaction information in diverse ways. By providing a JavaScript formula along with the tracking option when employing any of the available tracking techniques, users can craft tailor-made trackers to suit their specific requirements.

Find a guide to [Custom JS tracing | Ethereum](/reference/custom-js-tracing-ethereum) on the next page.
