# Demo Walkthrough: High-Speed Tracing This demo traces a `Timer.Counter` signal at 100 Hz, tests execution control, and verifies signal forcing. It works with either transport — choose the option that matches your setup. --- ## 1. Build and Launch the Test Environment ```bash source env.sh make -f Makefile.gcc ./Build/x86-linux/Test/Integration/IntegrationTests ``` The integration test starts a MARTe2 application with `DebugService` or `WebDebugService` already configured and waits for client interaction. --- ## 2. Connect a Client ### Option A — Web Browser (`WebDebugService`) Open `http://localhost:8090` in any browser. The UI appears instantly with the live object tree already loaded. ### Option B — Rust GUI (`DebugService`) ```bash cd Tools/gui_client cargo run --release ``` --- ## 3. Explore the Tree 1. In the **Application Tree**, expand `Root → App → Data → Timer`. 2. Click **Info** (web UI) or **ℹ Info** (Rust GUI) on the `Timer` node. 3. Verify the config panel shows `SleepTime: 10000` (100 Hz cycle). --- ## 4. Activate Trace 1. Locate the `Counter` signal under `Timer`. 2. Click **Trace** (web UI) or **📈 Trace** (Rust GUI). 3. The real-time plot begins with a monotonically increasing counter. 4. Confirm telemetry is flowing: - **Web UI:** `{"type":"trace",…}` events appear in the browser DevTools Network tab. - **Rust GUI:** The **UDP Packets** counter in the top bar increments rapidly. --- ## 5. Test Execution Control 1. Click **Pause** (⏸). 2. Observe that the plot freezes and the counter holds steady. 3. Click **Step** with count = 5. 4. The counter advances exactly 5 units then stops. 5. Click **Resume** (▶) to continue normal execution. --- ## 6. Test Signal Forcing 1. Locate `Root.App.Data.DDB.Counter`. 2. Click **Force** and enter `99999`. 3. Observe the oscilloscope plot jump to and hold at `99999`. 4. Click **Unforce** to release — the counter resumes its normal value. --- ## 7. Test a Breakpoint 1. Click **Break** on `Root.App.Data.DDB.Counter`. 2. Set operator `>` and threshold `500`. 3. Wait for the counter to exceed 500 — the application pauses automatically. 4. The status shows **PAUSED** at the GAM that triggered the break. 5. Click **Break OFF** then **Resume** to continue.