我可以在 Trace Compass 中同时查看 LTTng 跟踪的用户空间事件和内核事件吗?

Can I view LTTng traced Userspace events and Kernel events together in Trace Compass?

我正在使用 LTTng 来跟踪内核事件和用户空间跟踪点。我想在一个 Trace Compass window 中将它们一起可视化。然而,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 window.

中查看我的 C++ 代码中的 sched_switch 事件和跟踪点

Trace Compass's user guide and LTTng Documentation 不讨论一起使用内核跟踪和用户空间跟踪。

我认为这应该是可行的,因为如果我在安装了 babeltrace 的情况下使用 lttng-view 命令,我可以在 lttng-view.[=18 打印出的信息中看到列出的两种事件=]

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

在 tracecompass 中,通过 "Experiment".

组合多种类型的轨迹或轨迹

您可以按照此文档部分进行操作:Creating an Experiment