Martino Ferrari 572009fa1d Removed binary
2026-05-21 15:57:36 +02:00
2026-05-19 14:09:25 +02:00
2026-05-21 15:57:36 +02:00
2026-05-19 14:35:44 +02:00
2026-05-07 10:49:24 +02:00
2026-05-20 11:30:05 +02:00
2026-05-07 10:49:24 +02:00
2026-05-20 11:30:05 +02:00
2026-05-07 10:49:24 +02:00
2026-05-07 10:49:24 +02:00
2026-05-07 10:49:24 +02:00

MARTe2 Debug Suite

An interactive observability and debugging suite for the MARTe2 real-time framework. Instruments any running application without modifying its source code, providing real-time signal tracing, forced-value injection, breakpoints, execution stepping, and log forwarding.


Quick Start

1. Build

source env.sh
make -f Makefile.gcc

2. Run Integration Tests

source env.sh
./Build/x86-linux/Test/Integration/Integration/IntegrationTests.ex

3. Choose Your Client

Option A — Web UI (no install required)

Add WebDebugService to your application config and open http://localhost:8090 in any browser:

+WebDebugService = {
    Class    = WebDebugService
    HttpPort = 8090
}

Option B — Rust Native GUI

Add DebugService to your application config, then launch the GUI:

cd Tools/gui_client
cargo run --release
+DebugService = {
    Class       = DebugService
    ControlPort = 8080
    UdpPort     = 8081
    LogPort     = 8082
}

Features

Feature Description
Zero-code-change Registry patching replaces standard brokers at runtime — no application changes needed
Signal tracing Stream any signal at full RT rate over UDP (DebugService) or SSE (WebDebugService)
Signal forcing Persistent value injection directly into the RT memory map
Breakpoints Halt execution when a signal crosses a threshold (> < == >= <= !=)
Execution stepping Step N RT cycles then pause; optionally filter by thread
Live object tree Browse the full ObjectRegistryDatabase hierarchy with signal metadata
Config serving Retrieve the complete application CDB as JSON
Log forwarding All REPORT_ERROR events forwarded to the client in real time
Signal monitoring Poll any DataSourceI signal at a configurable period
MARTe2 messaging Send Message objects to any ORD object from the debug client

Transports at a Glance

DebugService WebDebugService
Client Rust native GUI or any TCP tool Any web browser
Commands Text over TCP (port 8080) HTTP POST /api/command
Telemetry Binary UDP (port 8081) Server-Sent Events /api/events
Logs TcpLogger TCP (port 8082) SSE event stream
Install Rust + Cargo None

Both transports implement the same DebugServiceI interface and register themselves as the global singleton — they are mutually exclusive (one per application).


Repository Layout

Source/
  Core/Types/
    Vec/          — RT-safe dynamic array (no STL)
    Result/       — Error-carrying return type
  Components/Interfaces/
    DebugService/
      DebugCore.h           — DebugSignalInfo, TraceRingBuffer, break op codes
      DebugServiceI.h       — Abstract interface + SignalAlias, BrokerInfo structs
      DebugBrokerWrapper.h  — Broker wrapper templates + registry builder helpers
      DebugService.h/.cpp   — TCP/UDP implementation
    WebDebugService/
      WebUI.h               — Embedded single-page HTML/CSS/JS application
      WebDebugService.h/.cpp — HTTP/SSE implementation
    TCPLogger/
      TcpLogger.h/.cpp      — LoggerConsumerI forwarding logs to TCP clients
Test/
  Integration/  — Integration test suite (180 s SIGALRM guard)
  UnitTests/    — Unit test suite (COVERAGE V34)
Tools/
  gui_client/   — Rust/egui native GUI (DebugService transport only)
S
Description
No description provided
Readme 35 MiB
Languages
C++ 47.2%
Rust 24.9%
JavaScript 15.1%
HTML 4.8%
Go 4%
Other 4%