You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用ftrace调试kernel panic?澄清其用途疑问

能否用ftrace调试Kernel Panic?

当然可以用ftrace调试kernel panic,它的能力远不止性能问题排查,在定位内核崩溃根源时同样实用——核心思路是通过ftrace记录panic发生前的内核执行流程,从而还原崩溃场景。

核心用法示例

  • 开启panic自动dump追踪数据
    内核提供ftrace_dump_on_oops参数,开启后系统触发oops或panic时,会自动将ftrace缓冲区的追踪内容输出到控制台(或串口),无需手动提前抓取。

    • 临时生效:echo 1 > /proc/sys/kernel/ftrace_dump_on_oops
    • 永久生效:在系统启动参数中添加ftrace_dump_on_oops=1
  • 提前配置针对性追踪规则
    根据疑似触发panic的模块或场景,提前设置ftrace的追踪范围,确保捕获关键执行路径:

    • 追踪特定函数调用链:使用function tracer,先切换追踪器:echo function > /sys/kernel/debug/tracing/current_tracer,再通过过滤规则指定目标函数:echo "ext4_*" > /sys/kernel/debug/tracing/set_ftrace_filter(以ext4文件系统相关函数为例)。
    • 追踪内核事件:比如开启调度事件追踪:echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable,用于排查调度相关的panic。

注意事项

  • 调整缓冲区大小:ftrace默认缓冲区较小,若panic前执行路径较长,关键数据可能被覆盖。可通过echo 16384 > /sys/kernel/debug/tracing/buffer_size_kb(设置16MB)扩大缓冲区。
  • 避免panic后自动重启:若系统panic后立即重启,可能无法查看ftrace输出,可设置panic_timeout=-1(启动参数或写入/proc/sys/kernel/panic)让系统崩溃后保持挂起状态,方便抓取日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:55:21