# MARTe2 Universal Debugging & Observability Suite

A professional-grade, zero-code-change debugging suite for the MARTe2 real-time framework.

## Features

- **Runtime Registry Patching**: Instruments all MARTe2 Brokers automatically at startup.
- **Hierarchical Tree Explorer**: Recursive visualization of the `ObjectRegistryDatabase`, including GAMs, DataSources, and Signals.
- **Real-Time Execution Control**: Pause and Resume application logic globally to perform static inspection.
- **High-Speed Telemetry**: Visual oscilloscope with sub-millisecond precision via UDP.
- **Persistent Forcing**: Type-aware signal overrides (Last-Writer-Wins) with persistent re-application.
- **Isolated Log Streaming**: Dedicated TCP channel for real-time framework logs to ensure command responsiveness.

## Components

### 1. C++ Core (`libmarte_dev.so`)
The core service that handles registry patching, TCP/UDP communication, and real-time safe data capture.

### 2. Rust GUI Client (`marte_debug_gui`)
A native, multi-threaded dashboard built with `egui`.
- **Side Panel**: Collapsible application tree and signal navigator.
- **Bottom Panel**: Advanced log terminal with Regex filtering and priority levels.
- **Right Panel**: Active Trace and Force management.
- **Central Pane**: High-frequency oscilloscope.

## Quick Start

### Build
```bash
# Build C++ Core
cd Build && cmake .. && make -j$(nproc)

# Build GUI Client
cd Tools/gui_client
cargo build --release
```

### Run
1. Start your MARTe2 application with the `DebugService` enabled.
2. Launch the GUI:
   ```bash
   ./Tools/gui_client/target/release/marte_debug_gui
   ```

## Communication Ports
- **8080 (TCP)**: Commands (TREE, FORCE, TRACE, PAUSE).
- **8082 (TCP)**: Real-time framework logs.
- **8081 (UDP)**: Signal telemetry data.
