0

如何使用 babeltrace 的 python reader api 打印完整的跟踪?

使用下面我可以获得事件的字段,但是如何像 babeltrace 那样打印完整的跟踪。

import babeltrace
import sys

trace_collection = babeltrace.TraceCollection()
trace_path = sys.argv[1]

trace_collection.add_traces_recursive(trace_path, 'ctf')

for event in trace_collection.events:
  print event.timestamp, event.cycles, event.name

并且使用事件字典,可以获取字段。但是如何使用 python reader 复制 babeltrace 输出?

for event in trace_collection.events:
  for field in event.items():
    print field

示例 babeltrace 输出:

[2015-10-20 15:16:34.600508066] (+1.481059687) samplehost sample_trace_provider:INFO: { cpu_id = 1 }, { fileAndLine = "sampletest.cpp:330", msg = "Directing trace stream to channel #0" }

让我知道是否需要任何进一步的信息。

4

1 回答 1

0

您不能像您期望的那样在单个语句中执行此操作。这是因为 Babeltrace Python 绑定类不__str__递归实现。

您在运行babeltrace命令时获得的默认输出格式称为ctf-text并在 C 中实现。当然有一种方法可以复制ctf-text的输出,但您需要在 Python 中手动实现漂亮的打印机.

于 2015-12-23T09:07:01.883 回答