首页 > 其他分享 >bcc之hello world

bcc之hello world

时间:2022-10-06 17:33:29浏览次数:40  
标签:%- trace BPF clone bcc world hello

bcc代码——Hello,world

1、简单监控clone()系统调用,将相关的信息打印出来

#!/usr/bin/python
from bcc import BPF
BPF(text="""
int kprobe__sys_clone(void *ctx){
	bpf_trace_printk("hello,world!\\n");
	return 0;
}
""").trace_print()

image

test="…"包含的是C语言编写的BPF程序

kprobe__sys_clone()对应内核kprobes的动态跟踪,也就是sys_clone()接口;

void *ctx这里没有用到参数,直接设置为void *类型

bpf_trace_printk()是一个通用的打印函数,会输出到trace_pipe中(/sys/kernel/debug/tracing/trace_pipe文件)然后trace_print()会读取上面的输出

2、格式化输出监控信息


#!/usr/bin/python
from bcc import BPF
prog="""
int hello(void *ctx){
      bpf_trace_printk("hello,world!\\n");
      return 0;
}
"""
#load BPF program
b=BPF(text=prog)
b.attach_kprobe(event=b.get_syscall_fnname("clone"),fn_name="hello")
#header and format output
print("%-18s %-16s %-6s %s" %("TIME(s)","COMM","PID","MESSAG"))
while 1:
        try:
                (task, pid, cpu, flags, ts, msg) = b.trace_fields()
        except ValueError:
                continue
        print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))                                                              

采用hello()作为通用函数,而非使用kprobe__的前缀,接着,调用attach_kprobe()将hello()函数添加到系统调用clone()处

从全局共享文件/sys/kernel/debug/tracing/trace_pi/pe中读取一行并返回域。

image

标签:%-,trace,BPF,clone,bcc,world,hello
From: https://www.cnblogs.com/linhaostudy/p/16758068.html

相关文章

  • 第一个Java程序hello world
    day4:我的第一个JAVA程序HelloWorldpublicclassMain{publicstaticvoidmain(String[]args){System.out.println("hello,world");}}注意事项......
  • hello-world
    C++#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"HelloWorld"<<endl;return0;}Pythonprint("HelloWorld");Javapublicc......
  • Hello World
    1.随便新建一个文件夹存放代码2.存放一个java文件●文件后缀名问.java●Hello.java3.编写代码publicclassHello{publicstaticvoidmain(String[]args){S......
  • HelloWorld和Java程序运行机制
    HelloWorld1.新建java文件后缀名为.java2.编写代码publicclassHello{publicstaticvoidmain(String[]args){System.out.print("Hello,World!");......
  • Hello World
    HelloWorld1.新建一个文件夹,存放代码2.新建一个java文件。文件后缀名名为.java。Hello.java。【注意点】:系统可能没有显示文件后缀名3.编写代码publicclassHello......
  • Spring MVC基础(一):HelloWorld案例
    构建1个maven项目pom.xml<packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifa......
  • 启动 Hello Spring Security Boot 应用
    本文章对如何快速启动一个启动HelloSpringSecurityBoot应用进行说明。下载代码在这个项目中,使用的是 spring.io 的项目生成程序,生成的地址为:https://start.sprin......
  • java 输出hello world 会有几个线程
    先直接说结论五个或者6个测试代码如下点击查看代码ThreadMXBeanbean=ManagementFactory.getThreadMXBean();System.out.println("helloworld:"+bean.getTh......
  • HELLO。javaworld
    JDK:javaDevelopmentKitJava开发者工具JRE:JavaRuntimeEnvironmentJava运行时环境JVM:JavaVirtualMachineJava虚拟机   卸载JDK17章三分安装JDK百度搜......
  • Flink helloworld及理论(一)
    Flink理论flink安装我使用的是flink的单机版,过程在这:https://www.cnblogs.com/wuxiaolong4/p/16548910.htmlhelloworld      import org.apache.flink.api.s......