我有内核函数调用的信息,包括时间戳和它们被调用的顺序,并且可以从中生成调用堆栈。但是因为tracecompass已经从lttng的跟踪输出中显示了callstack,所以我想知道我是否可以以一种它理解的格式将trace数据提供给tracecompass,以便它可以显示我的数据中的调用堆栈。但无法找到调用堆栈所需的输入格式。我知道它需要lttng的ctf格式输出,但这是整个跟踪数据而不是堆栈跟踪。
答案 0 :(得分:0)
来自lttng的跟踪的callstack由状态系统构建。我不知道他们是如何为UST应用程序中的callstack做的。但是在内核的控制流视图中存在类似的外观功能。调用树由sched_process_fork事件构成。
sched_process_fork: { cpu_id = 1 }, { parent_comm = "bash", parent_tid = 16746, parent_pid = 16746, parent_ns_inum = 4026531836, child_comm = "bash", child_tid = 16970, _vtids_length = 1, vtids = [ [0] = 16970 ], child_pid = 16970, child_ns_inum = 4026531836 }
它们是在流程要求新流程时生成的。您可以使用babeltrace以该格式编写一些事件,并尝试使用Trace Compass中内核跟踪透视图中的控制流视图。
但我认为您应该使用callstack查看CTF跟踪的元数据,以了解它们是如何在那里进行的。
希望我能帮一点点。