Skip to main content

Module debug

Module debug 

Source
Expand description

Debug - Tick単位のデバッグ出力機構

Eval/Test実行時のデバッグ用。Tick単位でStateをDumpする。

§設計思想

  • Tick-based: Spanログではなく、Tick単位のスナップショット
  • 自動収集: Dumpable 実装 + register() で完了
  • Subscribe: broadcast channelで外部からSubscribe可能
  • 条件付き: -v / RUST_LOG=debug / Error時のみ有効

§使い方

use swarm_engine_core::debug::{TickDumper, Dumpable};

// Dumpable を実装
impl Dumpable for MyState {
    fn name(&self) -> &'static str { "my_state" }
    fn snapshot(&self, tick: u64) -> Option<serde_json::Value> {
        Some(serde_json::json!({ "count": self.count }))
    }
}

// TickDumper に登録
let mut dumper = TickDumper::new(256);
dumper.register(Arc::new(my_state));
dumper.enable();

// Subscribe
let mut rx = dumper.subscribe();
tokio::spawn(async move {
    while let Ok(snap) = rx.recv().await {
        eprintln!("{:?}", snap);
    }
});

// Tick終了時
dumper.dump(tick);

Structs§

DebugSnapshot
Tick単位のスナップショット
StderrDumpSubscriber
stderr出力用Subscriber
TickDumper
Tick Dumper - Dumpable の Registry + 配信

Traits§

Dumpable
Tick単位でDump可能なもの