aether/api/
trace.rs

1use super::Aether;
2
3impl Aether {
4    /// 清空内存中的 TRACE 缓冲区。
5    ///
6    /// 这是为 DSL 安全调试设计的:脚本调用 `TRACE(...)` 来记录
7    /// 值,宿主应用程序通过此方法带外读取它们。
8    pub fn take_trace(&mut self) -> Vec<String> {
9        self.evaluator.take_trace()
10    }
11
12    /// 清除 TRACE 缓冲区而不返回它。
13    pub fn clear_trace(&mut self) {
14        self.evaluator.clear_trace();
15    }
16
17    /// 获取所有结构化的跟踪条目
18    ///
19    /// 返回带有级别、类别、时间戳等的结构化跟踪条目向量。
20    pub fn trace_records(&self) -> Vec<crate::runtime::TraceEntry> {
21        self.evaluator.trace_records()
22    }
23
24    /// 按级别过滤跟踪条目
25    pub fn trace_by_level(
26        &self,
27        level: crate::runtime::TraceLevel,
28    ) -> Vec<crate::runtime::TraceEntry> {
29        self.evaluator.trace_by_level(level)
30    }
31
32    /// 按类别过滤跟踪条目
33    pub fn trace_by_category(&self, category: &str) -> Vec<crate::runtime::TraceEntry> {
34        self.evaluator.trace_by_category(category)
35    }
36
37    /// 按标签过滤跟踪条目
38    pub fn trace_by_label(&self, label: &str) -> Vec<crate::runtime::TraceEntry> {
39        self.evaluator.trace_by_label(label)
40    }
41
42    /// 对跟踪条目应用复杂过滤器
43    pub fn trace_filter(
44        &self,
45        filter: &crate::runtime::TraceFilter,
46    ) -> Vec<crate::runtime::TraceEntry> {
47        self.evaluator.trace_filter(filter)
48    }
49
50    /// 获取跟踪统计信息
51    ///
52    /// 返回关于跟踪条目的统计信息,包括按级别和类别的计数。
53    pub fn trace_stats(&self) -> crate::runtime::TraceStats {
54        self.evaluator.trace_stats()
55    }
56
57    /// 设置 TRACE 缓冲区大小
58    ///
59    /// 这将设置 TRACE 缓冲区可以存储的最大条目数。
60    /// 如果新大小小于当前条目数,多余的条目将被从缓冲区前端移除。
61    pub fn set_trace_buffer_size(&mut self, size: usize) {
62        self.evaluator.set_trace_buffer_size(size);
63    }
64
65    /// 获取当前顶级执行的 step 计数。
66    ///
67    /// 该计数在每次调用 `eval(...)` / `eval_report(...)`(以及它们的文件包装器)开始时被重置。
68    ///
69    /// 说明:step 目前按“语句级”计数(每求值一条语句 +1)。
70    pub fn step_count(&self) -> usize {
71        self.evaluator.step_count()
72    }
73}