4.6 attach_raw_socket() 4.7 attach_xdp() 4.8 attach_func() 4.9 detach_func() 4.10 detach_kprobe() 4.11 detach_kretprobe() 0x05 Linux内核动态追踪 未完待续 0xff 参考链接 BPF(Berkeley Packet Filter)伯克利包过滤器工具---BCC(BPF Compiler Collection (bcc)开发示例: 现在最新的内核是6.x.y 简介...
b.attach_kprobe(event="context_switch", fn_name="do_entry") b.attach_kretprobe(event="context_switch", fn_name="do_return") b.trace_print 运行结果,遇到如下问题: 一开始以为是因为context_switch函数没有被导出的原因,经师兄提醒,查看了下探针: 发现没有context_switch的kprobe,相关函数学习: nr_co...
语法:BPF.attach_kprobe(event="event", fn_name="name") 使用函数入口的内核动态跟踪,关联C函数name和内核函数event()。 2.2attach_kretprobe 语法:BPF.attach_kretprobe(event="event", fn_name="name") 关联C函数name和内核函数event,在内核函数返回的时候调用函数name. 2.3attach_tracepoint 语法:BPF.attach_...
语法:BPF.attach_kprobe(event="event", fn_name="name") 使用函数入口的内核动态跟踪,关联C函数name和内核函数event()。 2.2attach_kretprobe 语法:BPF.attach_kretprobe(event="event", fn_name="name") 关联C函数name和内核函数event,在内核函数返回的时候调用函数name. 2.3attach_tracepoint 语法:BPF.attach_...
本篇中使用attach_kprobe来创建sys_clone的kprobe,当触发时候运行hello程序。可以调用多次attach_kprobe来附加C程序给多个内核函数。 最后通过trace_fields来返回来自trace_pipe的一组域。当然trace_print适合调试,真正的工具应该使用BPF_PERF_OUTPUT()。 3.磁盘处理 ...
BCC:attach_kprobe 和 attach_kretprobe 于是我就准备从kprobes和kretprobes这两种探针入手,对context_switch函数的执行时长进行测量。 0 实践 3 最后就是实践了,我利用不同的映射输出函数写了三个版本,每个版本都是上一个版本的优化。 (一)起初代码 主要涉及函数: ...
attach_kprobe() : 将函数与内核事件关联,用于检测指定事件。例如“b.attach_kprobe(event=b.get_syscall_fnname("clone"), fn_name="hello")”,event指定事件,fn_name,指定bpf代码里的函数名,比如这里就是hello()函数。 trace_fields() : 从trace_pipe返回一组固定格式的字段,与trace_print()类似,但是官方...
b.attach_kprobe(event=b.get_syscall_fnname("clone"), fn_name="hello"):为内核clone系统调用函数创建一个kprobe,该kprobe会执行自定义的hello()函数。可以通过多次执行attach_kprobe() ,将自定义的C函数附加到多个内核函数上。 b.trace_fields():从trace_pipe返回固定的字段集,与trace_print()类似,对黑客...
kprobe__kernel_function_name 其中kprobe__是前缀,用于给内核函数创建一个kprobe(内核函数调用的动态跟踪)。也可通过C语言函数定义一个C函数,然后使用python的BPF.attach_kprobe()来关联到内核函数。 例如: intkprobe__tcp_v4_connect(structpt_regs *ctx,structsock *sk) ...
b.attach_kprobe(event=b.get_syscall_fnname("clone"), fn_name="hello"):为内核clone系统调用函数创建一个kprobe,该kprobe会执行自定义的hello()函数。可以通过多次执行attach_kprobe() ,将自定义的C函数附加到多个内核函数上。 b.trace_fields():从trace_pipe返回固定的字段集,与trace_print()类似,对黑客...