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

被折叠的 条评论
为什么被折叠?



