DEV Community

Genadi Avetisov
Genadi Avetisov

Posted on

Building EVMTraceX: A Terminal-First Explorer for EVM Execution Traces

EVM transaction traces contain valuable evidence about how a contract executes: nested calls, gas usage, reverts, errors, and storage changes. But navigating raw trace output can be difficult when you need to understand how individual execution frames relate to each other.

EVMTraceX is a terminal-first EVM execution trace explorer written in Rust. It turns supported execution traces into an interactive interface designed for developers, auditors, and security researchers.

The project is open source under the MIT License.

Repository: GhostLabs-dot/EVMTraceX

Downloads: EVMTraceX v0.2.1 Releases

Exploring the execution tree

EVMTraceX presents execution traces as a navigable tree rather than an unstructured block of output. This makes it easier to follow nested calls and move between relevant execution frames.

EVMTraceX terminal interface showing an EVM execution tree, frame counts, reverts, and storage writes

The interface provides an overview of the trace, including frame counts, revert counts, storage writes, and execution status when available in the input.

Supported trace inputs include Geth-style callTracer JSON and Foundry textual traces.

Inspecting individual frames

Selecting a frame exposes more detailed execution information, including call type, target address, gas usage, execution status, and other fields available in the trace.

EVMTraceX details panel with frame information and storage changes

The interface also supports keyboard-driven navigation and filtering. You can move between frames, inspect details, filter matching calls, and focus on reverted frames or frames with storage changes.

Investigating storage changes

Storage modifications can help explain how execution affects contract state. EVMTraceX provides a storage view that associates changes with execution frames and shows available before-and-after values.

EVMTraceX terminal storage panel showing storage slots and value changes

The information available depends on the trace format and the fields supplied by the input. The tool preserves the available evidence instead of inventing missing execution data.

Finding reverts and errors

When a trace contains a revert or execution error, EVMTraceX makes that status visible in the interface. This helps developers investigate where an execution failed and examine the associated frame details.

EVMTraceX details panel showing a reverted execution and assertion failure

This is particularly useful when inspecting complex call sequences or examining traces produced during testing.

Quick start

Option 1: Download a prebuilt binary

Open the EVMTraceX v0.2.1 release page and select the archive matching your operating system and CPU architecture.

Prebuilt archives are available for:

  • Linux x86-64
  • Linux ARM64
  • macOS Intel
  • macOS Apple Silicon
  • Windows x86-64

The release notes include SHA-256 checksums for verifying downloaded archives.

After extracting the archive, run the executable with --help to see the available command-line options.

On Linux or macOS:

./evmtracex --help
Enter fullscreen mode Exit fullscreen mode

On Windows PowerShell:

.\evmtracex.exe --help
Enter fullscreen mode Exit fullscreen mode

Option 2: Build from source

Install the stable Rust toolchain, then clone the repository and build the project:

git clone https://github.com/GhostLabs-dot/EVMTraceX.git
cd EVMTraceX
cargo build --release --locked
Enter fullscreen mode Exit fullscreen mode

Run the included example trace:

./target/release/evmtracex examples/sample_trace.json
Enter fullscreen mode Exit fullscreen mode

On Windows, the executable is named evmtracex.exe.

For more usage examples and input-format details, see the project README.

Working with Foundry traces

You can capture a Foundry test trace and inspect it with EVMTraceX:

forge test -vvvv > foundry-trace.txt
./target/release/evmtracex --foundry foundry-trace.txt
Enter fullscreen mode Exit fullscreen mode

For additional storage-change output from Foundry, use the verbosity level documented in the project README.

Using RPC tracing

EVMTraceX can also fetch a completed transaction trace when an RPC endpoint is explicitly configured and supports the required debug_traceTransaction call with callTracer.

RPC access is optional. Local trace files can be inspected without configuring a remote endpoint.

What EVMTraceX is — and what it is not

EVMTraceX is an execution trace explorer, not an automatic vulnerability scanner.

Its purpose is to help engineers inspect execution evidence. It does not currently provide symbolic execution, exploit generation, automatic vulnerability classification, opcode-level structLogs analysis, or arbitrary ABI argument decoding.

The tool is designed to make supported trace data easier to navigate while keeping the limits of that data explicit.

Project links

EVMTraceX is developed and maintained by Ghost Labs as part of our work on developer tooling, EVM analysis, and software security research.

Feedback is welcome, especially from developers who work with Foundry, Geth traces, and terminal-based debugging workflows. Which trace formats or inspection features would be most useful in your workflow?

Top comments (0)