Expand description
JSON-RPC server for EDB debugging control and inspection.
This module provides a comprehensive JSON-RPC API that enables front-end applications and debugging clients to interact with the EDB debugging engine. The RPC interface exposes all debugging functionality including snapshot navigation, expression evaluation, storage inspection, and trace analysis.
§Architecture
The RPC system consists of several key components:
- Server (
server) - HTTP/WebSocket server handling client connections - Methods (
methods) - RPC method implementations organized by functionality - Types (
types) - Request/response data structures and protocol types - Utils (
utils) - Common utilities for RPC operations
§API Categories
§Snapshot Management
- Navigate through execution snapshots (forward/backward)
- Access snapshot details and execution context
- Jump to specific execution points
§Expression Evaluation
- Evaluate Solidity-like expressions against any snapshot
- Access variables, function calls, and blockchain context
- Real-time expression evaluation with full debugging context
§Storage and State Inspection
- Read contract storage and state variables
- Inspect memory, stack, and call data
- Access transient storage and EVM state
§Trace Analysis
- Navigate the complete execution trace
- Analyze call patterns and execution flow
- Access detailed opcode-level execution information
§Artifact Management
- Access compiled contract artifacts and metadata
- Retrieve source code mappings and debugging information
- Manage contract compilation and analysis results
§Usage
ⓘ
use edb_engine::rpc::{DebugServer, DebugServerConfig};
// Start the RPC server
let config = DebugServerConfig::default();
let server = DebugServer::new(engine_context, config).await?;
server.run().await?;§Protocol
The RPC server supports both HTTP POST requests and WebSocket connections
for real-time debugging. All methods follow the JSON-RPC 2.0 specification
with structured request/response formats defined in the types module.