You need to enable JavaScript to run this app. Nexus 6P自定义内核开Function Tracer后读tracing文件报No such device求助
优惠活动
大模型
产品
解决方案
定价
更多

Nexus 6P自定义内核开Function Tracer后读tracing文件报No such device求助

Nexus 6P 重编开启ftrace后读取available_filter_functions报错问题

问题背景

  • 测试设备为Nexus 6P(angler),内核研究方向为虚拟内存管理逻辑
  • 原厂默认AOSP内核未开启CONFIG_FUNCTION_TRACER,无法通过function tracer追踪内存管理函数运行路径
  • 已完成操作流程:下载对应版本Android内核源码,手动开启CONFIG_FUNCTION_TRACER及关联依赖配置后重新编译内核,替换内核镜像重编boot镜像并刷入设备
  • 刷入后设备可正常启动,所有基础功能无异常,但执行ftrace节点读取命令时返回错误
  • 已完成初步排查:检查对应路径SELinux上下文标签,执行setenforce 0切换SELinux为permissive宽容模式,问题未解决

复现命令与输出

C:\Users\dvdface>adb shell
angler:/ # cd /sys/kernel/debug/tracing/
angler:/sys/kernel/debug/tracing # ls
README                     dyn_ftrace_total_info per_cpu            set_ftrace_pid     tracing_cpumask
available_events           enabled_functions     printk_formats     set_graph_function tracing_on
available_filter_functions events                saved_cmdlines     trace              tracing_thresh
available_tracers          free_buffer           saved_tgids        trace_clock
buffer_size_kb             instances             set_event          trace_marker
buffer_total_size_kb       max_graph_depth       set_ftrace_filter  trace_options
current_tracer             options               set_ftrace_notrace trace_pipe
angler:/sys/kernel/debug/tracing # cat available_filter_functions
cat: available_filter_functions: No such device

核心排查方向

  • 校验编译内核的实际配置是否真的生效:不要只参考menuconfig的选中状态,要直接查看编译目录下生成的.config文件,确认CONFIG_FUNCTION_TRACER=y、CONFIG_DYNAMIC_FTRACE=y、CONFIG_FUNCTION_PROFILER=y三个核心配置是否真的被编入内核——Nexus 6P对应的老版本arm64 EAS内核存在配置依赖硬编码,很可能出现手动选中配置后被Kconfig逻辑自动裁剪为未选中的情况
  • 定位报错本质:available_filter_functions节点能通过ls看到、但读取时返回"No such device"(对应内核返回值-ENODEV),大概率是老内核的ftrace节点注册逻辑问题——如果未开启CONFIG_DYNAMIC_FTRACE,即便开启了基础CONFIG_FUNCTION_TRACER,available_filter_functions节点也不会完成真正的初始化,节点inode只做目录占位,打开时直接返回无设备错误
  • 检查内核启动日志的ftrace初始化记录:执行dmesg | grep -i ftrace,如果看到ftrace符号表为空、动态追踪初始化失败的日志,基本可以确认是编译时漏开了必要的依赖配置
  • 排除debugfs挂载异常:执行mount | grep debugfs,确认debugfs是完整挂载到/sys/kernel/debug路径,不存在部分挂载、权限异常的情况

内容的提问来源于stack exchange,提问作者Kevin Ding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 00:24:09