我已经在android AVD上安装了Ftrace并尝试使用Ftrace的功能,但它不起作用。
下面是我所做的事情的列表:
- 安装 ubuntu 10.04 LTS
- 安装必要的工具,如android sdk、工具链、库等
- 下载金鱼内核
参考-http://blog.markloiseau.com/2012/07/how-to-compile-the-android-goldfish-emulator-kernel/ http://blog.markloiseau.com/2012/07/how-to-compile-the-android-goldfish-emulator-kernel/罢工>
- 修改内核配置文件(打开Tracer选项)
- 使用已使用跟踪器选项编译的自定义内核启动 goldfish
- 尝试使用Ftrace功能
- 内核冻结
这是日志:
\# mount -t debugfs nodev /sys/kernel/debug
\# ls /sys/kernel/debug
sched_features
mmc0
tracing
bdi
\# cd /sys/kernel/debug/tracing
\# ls
events
set_event
available_events
printk_formats
per_cpu
options
saved_cmdlines
trace_marker
buffer_size_kb
trace_pipe
README
tracing_thresh
tracing_max_latency
current_tracer
available_tracers
trace
tracing_cpumask
trace_options
tracing_enabled
tracing_on
set_ftrace_pid
\# cat available_tracers
function_graph function sched_switch nop
\# cat current_tracer
nop
\# echo sched_switch > current_tracer
\# cat current_tracer
sched_switch
\# cat trace | /data/busybox head -10
\# tracer: sched_switch
\#
\# TASK-PID CPU# TIMESTAMP FUNCTION
\# | | | | |
bash-258 [000] 490.261240: 258:120:R + [000] 4:115:S events/0
bash-258 [000] 490.262087: 258:120:S ==> [000] 45:120:R adbd
adbd-45 [000] 490.262318: 45:120:S ==> [000] 4:115:R events/0
events/0-4 [000] 490.262457: 4:115:R + [000] 43:120:S qemud
events/0-4 [000] 490.262492: 4:115:S ==> [000] 43:120:R qemud
qemud-43 [000] 490.262643: 43:120:R + [000] 109:112:S er$SensorThread
\# echo function > current_tracer *<--- this command occur freeze*
如上所示,一些功能运行良好。但当我打开跟踪功能(一项关键功能)时,系统出现故障。
我应该怎么办 ?
函数跟踪器可能冻结的原因有多种。它是一个非常侵入性的跟踪器(跟踪内核的几乎所有功能)。一个问题是它是否跟踪禁用中断等内部功能。这将导致它进入无限循环。现在,如果您运行的是 Android,我假设您有一个 ARM 设备。根据配置的不同,ARM 的一些低级函数可能需要标记为 notrace 以防止它们被跟踪。如果您启用了动态跟踪,请尝试仅跟踪单个函数,如果有效,您就知道问题出在不应该跟踪的内容上。要跟踪单个函数,只需:
回声计划> set_ftrace_filter;
echo 函数 > current_tracer
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)