内核 trace&hook

文章介绍了Linux内核调试中的GKI改造、Kprobe及其相关工具如perf、ebpf的使用,包括静态和动态调试方法如tracepoint、printk、kprobe等。还提到了利用debugfs和tracefs进行调试,并详细阐述了如何添加和启用调试点以追踪函数调用堆栈。此外,文章也提及了perfetto和bpftrace这两个性能跟踪工具。

GKI改造原则、机制和方法_内核工匠的博客-CSDN博客

Linux内核 eBPF基础:Tracepoint原理源码分析_ebpf tracepoint_rtoax的博客-CSDN博客

为 GKI 开发内核代码  |  Android 开源项目  |  Android Open Source Project


 

Kprobe

Kprobe 依附的高效探测工具perf 、ebpf

静态调试:tracepoint、printk

动态调试:kprobe、uprobe、function graph

https://www.kernel.org/doc/Documentation/trace/kprobes.rst

https://www.kernel.org/doc/Documentation/trace/ftrace.rst

  - Documentation/trace/kprobetrace.rst

  - Documentation/trace/events.rst

  - tools/perf/Documentation/perf-probe.txt

Kprobe 基础用法

https://blog.51cto.com/u_7784550/6090883

内核调试

https://blog.csdn.net/panhewu9919/article/details/103114321/

Debugfs

https://www.opensourceforu.com/2010/10/debugging-linux-kernel-with-debugfs/

$ sudo mkdir /tmp/{proc,sys,debug}

$ sudo mount -t proc nondev /tmp/proc/

$ sudo mount -t sys nondev /tmp/sys/

$ sudo mount -t debugfs nondev /tmp/debug/

tracefs

mount -t tracefs nodev /sys/kernel/tracing

procfs — Documentation/filesystems/proc.txt

sysfs — Documentation/filesystems/sysfs.txt

debugfs — Documentation/filesystems/debugfs.txt

ftrace function

CONFIG_DYNAMIC_FTRACE=y

CONFIG_FUNCTION_TRACER=y

Trace-cmd

工具博客转载-ftrace_51CTO博客_博客工具

https://lwn.net/Articles/410200/

采用sched_feat作为内核调feature 开关

采用sched_feat作为内核调试控制开关_yiyeguzhou100的博客-CSDN博客

添加一个探测点,可以打印函数调用堆栈

 1. echo 'p:myprobe pl_store buf=+0(%x1):string' >> /sys/kernel/tracing/kprobe_events

 2.echo 1 > /sys/kernel/tracing/options/stacktrace

 3.使能myprobe echo 1 >> /sys/kernel/tracing/events/kprobes/myprobe/enable

添加trace_event 点,打印函数调用堆栈

echo sched_wakeup >>/sys/kernel/debug/tracing/set_event

echo 1 > /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable

echo stacktrace >>/sys/kernel/debug/tracing/events/sched/sched_wakeup/trigger

Tracepoint 添加打印函数调用栈

如对 android_vh_irqtime_account_process_tick_handler

echo 'p:myprobe/irqtime_account_process_tick  __traceiter_android_vh_irqtime_account_process_tick  buf=+0(%x1):string' >>

 /sys/kernel/tracing/kprobe_events

echo 1 > /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable

echo stacktrace >>/sys/kernel/debug/tracing/events/sched/sched_wakeup/trigger

打开tracing_on

perfetto  cpu  trace 

external/perfetto/docs/data-sources/cpu-freq.md

bpftrace

Linux性能工具-bpftrace入门-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lei7143

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值