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

时间:2012-10-24 06:53:14

标签: android freeze ftrace

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

以下列出了我所做的事情:

  1. 安装ubuntu 10.04 LTS
  2. 安装基本工具,如android sdk,toolchain,libs等
  3. 下载金鱼仁 参考 - http://blog.markloiseau.com/2012/07/how-to-compile-the-android-goldfish-emulator-kernel/
  4. 修改内核配置文件(启用“跟踪器选项”)
  5. 使用已使用跟踪器选项编译的自定义内核启动金鱼
  6. 尝试使用Ftrace功能
  7. 内核冻结
  8. 这是日志:

    \# 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*
    

    如上所示,部分功能效果很好。但是当我打开跟踪功能这个关键功能时,系统已关闭。

    我该怎么办?

1 个答案:

答案 0 :(得分:5)

函数跟踪器可能冻结的原因有几个。它是一个非常有侵略性的跟踪器(几乎跟踪内核的所有功能)。一个问题是它是否跟踪内部函数,如禁用中断。这会导致它进入无限循环。现在我假设您运行Android时有一个ARM设备。根据配置,ARM的某些低级功能可能需要标记为notrace以防止跟踪它们。如果您启用了动态跟踪,请尝试仅跟踪单个函数,如果可行,则您知道问题在于跟踪的内容不应该是。要跟踪单个函数,只需:

回音计划&gt; set_ftrace_filter; “回声功能”&gt; current_tracer

祝你好运。