1

我正在使用 LTTng 来跟踪内核事件和用户空间跟踪点。我想在一个 Trace Compass 窗口中将它们一起可视化。但是,LTTng 将内核事件和用户空间事件保存在单独的跟踪文件中,这不允许我在 Trace Compass 中一起查看它们。

这里有谁知道如何:

(1) 将两种事件保存在一个文件中?,或

(2) 使用 Trace Compass 组合来自 2 个跟踪文件的信息?


细节:

我正在使用 LTTng 来跟踪两种事件:

(1) 内核sched_switch事件(当调度器引起上下文切换时)

(2) 用户空间自定义跟踪点(我将它们命名为 setMarkerTracepoint 并从我的 C++ 程序中发布)

我使用以下命令设置跟踪会话并开始跟踪

# trace data is saved at TRACE_DIR
TRACE_DIR=/home/root/lttng-traces
lttng-sessiond --daemonize
lttng create my-session --output=$TRACE_DIR
lttng enable-event --userspace tracepointProvider:setMarkerTracepoint
lttng enable-event --kernel sched_switch
lttng start

然后,我运行我的 C++ 应用程序并在我的应用程序结束后停止 LTTng 跟踪。

lttng destroy

现在,当我检查我的跟踪数据的保存位置时,我发现 2 个位置有跟踪数据:

(1) /home/root/lttng-traces/kernel/

(2) /home/root/lttng-traces/ust/

我使用 Trace Compass 来可视化轨迹。内核目录下的文件包含所有 sched_switch 事件,但没有 setMarkerTracepoint 事件。ust 目录下的文件反之亦然。

使用内核事件进行跟踪,但没有用户空间跟踪点

使用用户空间跟踪点进行跟踪,但没有内核事件

我想在同一个 Trace Compass 窗口中查看我的 C++ 代码中的 sched_switch 事件和我的跟踪点。

Trace Compass 的用户指南LTTng 文档没有讨论一起使用内核跟踪和用户空间跟踪。

我认为这应该是可能的,因为如果我使用lttng-view安装了 babeltrace 的命令,我可以看到由lttng-view.

任何帮助将不胜感激!:)

4

1 回答 1

1

在 tracecompass 中,组合多种类型的跟踪或跟踪是通过“实验”完成的。

您可以遵循此文档部分:创建实验

于 2020-02-21T22:51:43.100 回答