Written by: algebnaly
Date: 2025-06-04T12:22:40.000Z
这个工具我用得不多, 仅仅使用function_gragh工具追踪内核中的调用路径. 需要注意的是使用function_graph工具时, 参数设置是在set_grapg_function和set_graph_notrace中, 在set_ftrace_notrace设置过滤是没有效果的, 因为那是针对ftrace的.
最简单易用, 但是如果用在经常被调用的函数上就会导致生成大量输出, 难以寻找关键信息.
比printk多了一个开关, 默认关闭输出, 可以使用
echo "file file.c +p" | sudo tee /sys/kernel/debug/dynamic_debug/control
这样的命令单独开启文件名匹配file.c的源文件中的pr_debug的输出.
此外要关闭file.c中的pr_debug的输出, 可以使用
echo "file file.c -p" | sudo tee /sys/kernel/debug/dynamic_debug/control
直接使用echo "" | sudo tee /sys/kernel/debug/dynamic_debug/control是不会生效的, 因为/sys/kernel/debug/dynamic_debug不是普通文件, 写入和读取具有特殊作用, 写入空字符串并不意味着清除匹配规则, 而仅仅被忽略了.