ftrace kprobe调试

本文介绍了如何使用kprobe进行内核调试,包括挂载debug分区、kprobe_events的使用、开启和过滤kprobe。kprobe允许在内核代码执行点中断并执行自定义代码,而无需重新编译内核。调试过程涉及启用kprobe、设置过滤条件以减少输出,以及通过内核接口观察调试信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kprobe

内核调试一般可以通过printk打印,这种方式需要重新编译内核,或者模块,如果编译内核还要重启设备才能生效。kprobe是一种内核调试方式,可以在内核执行代码位置中断,并执行我们插入的代码。同时内核提供了另一套接口 kprobe-trace,这个接口的优点是通过proc接口操作,不需要写代码,适合做一些临时的debug打印。

Mount debug分区

命令:mount -t debugfs nodev /sys/kernel/debug

Nodev可以是任意字符串

后面的目录也可以随意指定

重要文件接口

配置接口:/sys/kernel/debug/tracing/kprobe_events

读取信息接口:/sys/kernel/debug/tracing/trace

读取信息接口:/sys/kernel/debug/tracing/trace_pipe

开启某个kprobe接口:/sys/kernel/debug/tracing/events/kprobes/<EVENT>/enabled

过滤接口/sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter

kprobe_events

添加删除kprobe的接口,直接echo 'xxxx' >>kprobe_events就可以。内核文档比较详细,但是大多数参数没什么用。如下:

  p[:[GRP/]EVENT] [MOD:]SYM[+offs]|MEMADDR [FETCHARGS]	: Set a probe
  r[:[GRP/]EVENT] [MOD:]SYM[+0] [FETCHARGS]		: Set a return probe
  -:[GRP/]EVENT						: Clear a probe
 GRP		: Group name. If omitted, use "kpr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值