Как напечатать полное событие трассировки, используя Babeltrace-Python API?
Как мне распечатать полную трассировку, используя API-интерфейс читателя питона babeltrace?
Используя ниже, я могу получить поля события, но как я могу напечатать полный след, как делает 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
И используя словарь событий, поля могут быть получены. Но как скопировать вывод babeltrace с помощью python reader?
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" }
Дайте мне знать, если потребуется дополнительная информация.
1 ответ
Вы не можете сделать это в одном утверждении, как вы ожидаете. Это связано с тем, что классы привязок Babeltrace Python не реализуются __str__
рекурсивно.
Формат вывода по умолчанию, который вы получаете при запуске babeltrace
Команда называется ctf-text и реализована на C. Конечно, есть способ реплицировать вывод ctf-text, но вам нужно будет реализовать pretty-printer вручную в Python.