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

如何使用babeltrace python api打印完整的跟踪事件?,python,lttng,babeltrace,Python,Lttng,Babeltrace,如何使用babeltrace的python阅读器api打印完整的跟踪 使用下面的方法,我可以得到一个事件的字段,但是如何像babeltrace那样打印完整的跟踪呢 import babeltrace import sys trace_collection = babeltrace.TraceCollection() trace_path = sys.argv[1] trace_collection.add_traces_recursive(trace_path, 'ctf') for ev

如何使用babeltrace的python阅读器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" }

如果需要任何进一步的信息,请告诉我。

您不能像预期的那样在一份声明中完成这项工作。这是因为Babeltrace Python绑定类不会递归地实现
\uuu str\uu


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

感谢您提供的信息和评论!!