我正在使用 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
.
任何帮助将不胜感激!:)