1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// EDB - Ethereum Debugger
// Copyright (C) 2024 Zhuo Zhang and Wuqi Zhang
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//! 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
//!
//! ```rust,ignore
//! 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.
pub use *;
pub use *;