12.2. 在qemu-mini2440里使用lttng

1. 下载lttng工具链相应版本
我们使用的linux本版是linux-2.6.32-rc8,参考LTTng+LTTV versions compatibility
表:http://lttng.org/cgi-bin/gitweb.cgi?p=lttv.git;a=blob_plain;f=doc/developer/lttng-lttv-compatibility.html;hb=HEAD
知道我们需要:
patch-2.6.32-rc8-lttng-0.180 (这个版本不需要lttng-modules了)
lttv-0.12.29-02022010 
ltt-control-0.81-26032010
2. 首先给linux-2.6打补丁
需要使用quilt,使用yaourt -S quilt安装.
进入linux-2.6,解压下载的patch-2.6.32-rc8-lttng-0.180,并重命名为patches目录
执行如下命令将所有补丁打入
$ quilt push -a
需要打开lttng相关feature
$ ARCH=arm CROSS_COMPILE=arm-linux- make menuconfig
选中
General setup -> Activate markers [*]
              -> Linux Trace Toolkit Next Generation (LTTng) [*]
$ ARCH=arm CROSS_COMPILE=arm-linux- make -j4 uImage
$ ARCH=arm CROSS_COMPILE=arm-linux- make -j4 modules
复制uImage到qemu/mini2440,复制*.ko到root_qtopia/lib里

3. 修改root_qtopia/etc/init.d/rcS加载lttng模块
insmod /lib/ltt-filter.ko
insmod /lib/ltt-statedump.ko
insmod /lib/ltt-kprobes.ko
insmod /lib/ltt-userspace-event.ko

insmod /lib/block-trace.ko
insmod /lib/fs-trace.ko
insmod /lib/ipc-trace.ko
insmod /lib/kernel-trace.ko
insmod /lib/lockdep-trace.ko
insmod /lib/mm-trace.ko
insmod /lib/net-extended-trace.ko
insmod /lib/net-trace.ko
insmod /lib/pm-trace.ko
insmod /lib/rcu-trace.ko
insmod /lib/syscall-trace.ko
insmod /lib/trap-trace.ko

4. 交叉编译lttctl
解压缩并进入ltt-control
$ ./configure --host=arm-linux --prefix=/home/user/nfs/root_qtopia
$ make && make install
这是会将编译生成文件直接加入到root_qtopia里使用
为了使用lttctl需要添加环境变量LTT_DAEMON,通过修改root_qtopia/etc/profile实现
LTT_DAEMON="/bin/lttd"
export LTT_DAEMON

5. 编译lttv用来在host上分析生成的trace log
解压缩进入lttv
$ ./configure 
$ make && make install
可能链接会出错,需要修改lttv/lttv/Makefile
需要在每个-lglib-2.0后面添加-lm -lgmodule-2.0,显式使用这些库

6. 启动qemu,并使用lttng
仿真环境进入shell后,对于arm需要先执行ltt-armall,
然后执行lttctl -C -w /tmp/trace1 trace1打开一个session开始跟踪,
想要结束跟踪时可使用lttctl -D trace1
然后将/tmp/trace1目录复制到/root/下

7. 在Host机上使用lttv-gui分析
File -> Add Trace来选中放置log的目录root_qtopia/root/trace1,