printf("BPF skeleton loaded and attached successfully. Press enter to exit...\n"); getchar();
bpf_test_bpf__destroy(skel); return0; }
这是一个简单的demo,用来跟踪clone命令内置的kprobe挂载点,只要clone命令触发(任何创建新进程的行为都需要调用clone)就会在sys/kernel/tracing/trace_pipe这个文件(比较新的内核都是这个路径,老一点的是在debug路径下的,如果没有的话手动挂载一下tracingFS和debugFS)中输出Hello from eBPF with Skeleton! 在使用前需要在/sys/kernel/tracing/tracing_on中输入1开启跟踪echo 1 > tracing_on 然后运行loader程序就可以看跟踪结果了
130|oriole:/sys/kernel/tracing# echo 1 > tracing_on oriole:/sys/kernel/tracing# cat trace_pipe Lite Thread #2-10604 [003] d..3 36892.084632: bpf_trace_printk: Hello from eBPF with Skeleton! Lite Thread #1-10088 [005] d..3 36892.087729: bpf_trace_printk: Hello from eBPF with Skeleton! lowpool[756]-1210 [000] d..336892.151596: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [003] d..336892.805585: bpf_trace_printk: Hello from eBPF with Skeleton! roid.apps.turbo-6207 [003] d..336892.929320: bpf_trace_printk: Hello from eBPF with Skeleton! BG Thread #0-6234 [000] d..3 36892.942382: bpf_trace_printk: Hello from eBPF with Skeleton! BG Thread #0-6234 [000] d..3 36892.944007: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [001] d..336893.813645: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [001] d..336894.820207: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [002] d..336895.824630: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [002] d..336896.828603: bpf_trace_printk: Hello from eBPF with Skeleton! POSIX timer 3-2540 [003] d..336897.530348: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [003] d..336897.832404: bpf_trace_printk: Hello from eBPF with Skeleton! POSIX timer 3-2540 [003] d..336898.688762: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [002] d..336898.840582: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [002] d..336899.845768: bpf_trace_printk: Hello from eBPF with Skeleton! POSIX timer 3-2540 [000] d..336900.606367: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [000] d..336900.850164: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [002] d..336901.857614: bpf_trace_printk: Hello from eBPF with Skeleton! POSIX timer 3-2540 [001] d..336902.128525: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [001] d..336902.862111: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [001] d..336903.866426: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [003] d..336904.872046: bpf_trace_printk: Hello from eBPF with Skeleton! servicemanager-480 [003] d..336905.876475: bpf_trace_printk: Hello from eBPF with Skeleton! POSIX timer 3-2540 [000] d..336906.276747: bpf_trace_printk: Hello from eBPF with Skeleton! kthreadd-2 [004] d..336906.461608: bpf_trace_printk: Hello from eBPF with Skeleton!