如何从TraceCompass的Experiments中导出整合后的CTF格式跟踪数据?
将TraceCompass中整合Kernel/Userspace的Experiment导出为单个CTF文件的方法
TraceCompass里的Experiment本质是多份独立trace的视图层关联,不会自动改动原始trace文件,目前正式版本没有提供GUI一键导出合并后单CTF的入口,按以下步骤操作即可得到完整的单份CTF:
- 完成时间对齐校验
打开目标Experiment,在时间轴视图确认Kernel和Userspace跟踪数据的时间基准一致:如果是同一次LTTng采集会话同时抓取的两类数据,时间戳天然对齐不需要额外调整;如果是分批采集的,右键对应trace条目选Adjust Time Offset,对照两边共有的参考事件(比如内核态调度到对应用户进程的sched_switch事件、用户态程序入口点对应的内核exec事件)校正时间偏移,校正后保存配置。 - 导出带校正值的两份CTF临时文件
分别对Experiment内的Kernel trace、Userspace trace执行右键导出操作,路径选Export->Trace,导出格式选CTF,导出时务必勾选Apply time offset adjustments选项*(该选项是保证导出trace时间戳和Experiment视图一致的核心配置,不要漏选)*,把两份应用了时间校正的trace存到本地两个独立的临时目录。 - 合并两份CTF为单个完整trace
打开终端进入临时目录的上级路径,执行babeltrace2命令做事件流合并:
命令执行完成后,babeltrace2 --output-format=ctf --output=./final_merged_ctf/ ./temp_kernel_ctf/ ./temp_userspace_ctf/final_merged_ctf目录下就是时间轴完全对齐、同时包含所有内核与用户态事件的完整CTF文件集,直接作为单份trace导入TraceCompass即可,事件排列顺序和你在Experiment视图里看到的完全一致。
避坑提示:不要直接用未做时间校正的原始CTF执行合并,否则会出现内核、用户态事件时间错位,和你之前在Experiment里看到的视图对不上。
内容的提问来源于stack exchange,提问作者user45573
相关产品推荐
相关产品推荐

