在开启功能跟踪时Ftrace在android冻结,有人帮我:(

我在Android AVD上安装了Ftrace并尝试使用Ftrace的功能,但它不起作用.

以下是我所做的清单:

>安装ubuntu 10.04 LTS
>安装基本工具,如android sdk,toolchain,libs等
>下载金鱼仁
参考 – http://blog.markloiseau.com/2012/07/how-to-compile-the-android-goldfish-emulator-kernel/
>修改内核配置文件(打开Tracer选项)
>使用已使用跟踪器选项编译的自定义内核启动金鱼
>尝试使用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;
“回声功能”> current_tracer

祝好运.

上一篇:使用python从C代码中提取函数名称及其注释(了解Linux内核)


下一篇:vue学习笔记 六、ref定义单个数据