LTTng在精简环境中部署的成功实践

内核编译

* 添加交叉编译环境变量 ARCH(板子arch下文件夹名) PATH(gcc bin系列文件) CROSS_COMPILE(gcc前缀带“-”)
* make defconfig
* 参考lttng module的README。使用./script/build-in脚本在内核源码中插入LTTng support编译选项。
* 开启menuconfig 打开README中提到的选项。Tracepoints似乎是通过界面中Tracer-- kconfig中Ftrace开启。
* 替换目标板中的Image

ko编译
更改内核后,对应的内核模块大概率(基本上就是)要重新编译,特别是对于加Trace这种操作。不重新编译的话,遭遇到启动过程中脚本加载模块指向非法空地址之类的错误,启动失败。

* 修改环境变量,参见其Makefile,修改交叉编译工具环境变量及内核源码top地址。如KERNELDIR
* make
* 复制对应的ko到目标板中目标地址,让启动脚本insmod。

尝试启动

* 电源重新上下电,如果能正常启动,可以zcat /proc/config.gz |grep LTTNG 查看是否成功运行并且带有想要开启的编译选项。如果有strace 或者perf之类的也可以查看已经开启的Tracepoint。增强自己的信心。

编译移植LTTng

* 找一块环境齐全的Arm板子(架构一样就行),在里面愉快的./configure make make install ldconfig 把lttng 的tools和ust及5个依赖库都装完。
* 如果什么都不改,那么会全部装在/usr/local/下面。把整个local都复制到目标板里。
* 去目标板的/usr下看看,发现local已经裁剪掉了,ok,建立软链接指向刚复制进去的local/。
* 加上环境变量 PATH LD_LIBRARY_PATH之类的。
* 尝试使用lttng-sessiond , lttng list -k
* 如果可以显示内核的tracepoint 恭喜你!

无法追踪内核问题解决failed to load kmod library resourcesunable to list kernel events: kernel tracer not available

* 通过查log打印出处的源码,我发现原因可能是在初始化tracer的第一步,调用了modprobe之类的工具,从标准的路径/lib/modules/内核版本号/下面加载需要的内核模块,哪怕我把LTTng编译进了内核也有这一步。
* 然而这个文件夹被精简掉了,所以找不懂kmod那一套文件,所以启动失败了。
* 解决方法是,在上文中的内核源码里。make modules_install 到INSTALL_MOD_PATH。然后把整个目录下的安装好的目录复制到对应的目标板地址,注意到source和build这两个指向内核源码的软链接需要去掉。否则cp 操作会把内核源码也往目标地址复制。
* 再次尝试lttng-sessiond , lttng list -k终于成功了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要启动 LTTngLinux Trace Toolkit Next Generation)跟踪会话,你需要执行以下步骤: 1. 安装 LTTng:首先,你需要安装 LTTng 软件包。具体安装方法因操作系统而异。在 Ubuntu 上,你可以使用以下命令进行安装: ``` sudo apt-get install lttng-tools lttng-modules-dkms liblttng-ust-dev ``` 2. 创建 LTTng 跟踪会话:使用 `lttng create` 命令创建一个新的 LTTng 跟踪会话。你可以指定一个名称来标识该会话。例如,以下命令将创建一个名为 "my_session" 的跟踪会话: ``` lttng create my_session ``` 3. 添加要跟踪的事件:使用 `lttng enable-event` 命令添加要跟踪的事件。你可以指定要跟踪的事件名称、通配符或者事件组。例如,以下命令将启用所有系统调用事件的跟踪: ``` lttng enable-event -a -k syscalls ``` 4. 启动 LTTng 跟踪会话:使用 `lttng start` 命令启动 LTTng 跟踪会话,开始收集跟踪数据。 ``` lttng start ``` 5. 运行应用程序:在启动 LTTng 跟踪会话后,运行你想要跟踪的应用程序。 6. 停止 LTTng 跟踪会话:使用 `lttng stop` 命令停止 LTTng 跟踪会话。这将停止收集跟踪数据。 ``` lttng stop ``` 7. 销毁 LTTng 跟踪会话:使用 `lttng destroy` 命令销毁 LTTng 跟踪会话,并删除相关的跟踪数据文件。 ``` lttng destroy ``` 通过执行上述步骤,你就可以启动一个 LTTng 跟踪会话,并开始收集跟踪数据。你可以根据需要自定义要跟踪的事件和配置。 希望这个解释对你有帮助!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊苏C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值