Welcome to the CodeTracer's getting started section. This guide will help you understand how to record and replay programs in each of the supported programming languages.
Core Concept: Record and Replay
Unlike traditional debuggers that attach to a running process, CodeTracer works by first **recording** your application's execution into a trace file. This trace captures everything that happens during the run.
Once a recording is made, you can **replay** it as many times as you need in the CodeTracer GUI. This allows you to inspect the application's state at any point in time, move forwards and backwards through the execution, and use powerful features like tracepoints without having to run your application again.
Think of it like recording a video of your program's execution that you can then analyze in detail.
How to Use This Guide
This guide is structured to help you get started quickly and then dive deeper into the features that interest you.
General-Purpose Languages
These languages are recorded directly via the ct CLI (ct record, ct run):
- **Python**: Steps for installing the recorder, creating a trace, and replaying it with your interpreter.
- **Ruby**: Examples and steps how to trace a Ruby program.
- **JavaScript / TypeScript**: Instrument and record JS/TS programs.
- **WASM**: Examples and steps how to trace a WASM program.
Zero-Knowledge Languages
- **Noir**: Examples and steps how to trace a Noir program.
- **Circom**: Trace witness generation for Circom zero-knowledge circuits.
- **Miden**: Trace programs on the Miden STARK-based VM.
- **Leo (Aleo)**: Trace Leo smart contracts on the Aleo network.
Smart Contract Languages
These languages use dedicated recorder binaries. Record with the language-specific recorder, then view with ct replay --trace-folder <dir>:
- **Solidity (EVM)**: Trace Solidity contracts via debug_traceTransaction.
- **Stylus**: Examples and steps how to trace a Stylus contract.
- **Cairo (StarkNet)**: Trace Cairo programs and StarkNet contracts.
- **Aiken (Cardano)**: Step through UPLC CEK machine execution.
- **Cadence (Flow)**: Trace Cadence contracts via interpreter instrumentation.
- **Move (Sui / Aptos)**: Trace Move VM execution on Sui and Aptos.
- **Solana**: Trace Solana SBF programs with DWARF source mapping.
- **Sway (FuelVM)**: Trace Sway contracts on FuelVM.
- **PolkaVM (ink!)**: Trace PolkaVM programs and ink! contracts.
- **Tolk (TON)**: Trace Tolk/FunC contracts on the TON blockchain.