BCC

Linux 动态跟踪工具
授权协议 Apache
开发语言 C/C++ Python
所属分类 开发工具、 程序调试工具
软件类型 开源软件
地区 不详
投 递 者 司马奇希
操作系统 Linux
开源组织
适用人群 未知
 软件概览

BCC 是一个开源的 Linux 动态跟踪工具。无第三方模块依赖,该工具继承 BPF 这个强大的内核中虚拟机的功能,可对程序进行高效而且安全的跟踪。BPF 内建于 Linux 内核。

下面是对一个磁盘 IO 核心函数的跟踪截图:

# ./bitehist.py Tracing... Hit Ctrl-C to end.
^C
     kbytes          : count     distribution
       0 -> 1        : 3        |                                      |
       2 -> 3        : 0        |                                      |
       4 -> 7        : 211      |**********                            |
       8 -> 15       : 0        |                                      |
      16 -> 31       : 0        |                                      |
      32 -> 63       : 0        |                                      |
      64 -> 127      : 1        |                                      |
     128 -> 255      : 800      |**************************************|

工具结构图:

  • BCC校验(异或校验)原理 BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是每两个16进制的字符)进行异或后即得到校验码。 工作过程 例如:需要异或校验的16进制数据:01 A0 7C FF 02 相同数据位上的值相同则取0,反之则取1 20 0010 0000 最终结果 22 0010 001

  • bcc

    bcc-execsnoop 性能2021-05-04 19:36:53 目前使用到的bcc程序主要包括两个部分,一部分是python语言,一部分是c语言。python部分主要做的工作是BPF程序的加载和操作BPF程序的map,并进行数据处理。c部分会被llvm编译器编译为BPF字节码,经过BPF验证器验证安全后,加载到内核中执行。python和c中出现的陌生函数可以查下面这两个 一、BCC简介 1

  • 对于5.15版本的安装 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD Executing: /tmp/apt-key-gpghome.yKCApS0t8A/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4

  • 序 bcc之前有一篇介绍:bcc/ebpf使用介绍 使用bcc,除了官方已经提供的一些工具(主要是对系统的调试,例如io、内存、网络、cpu),我们还可以用它来调试我们的应用代码。 我们可以把调试手段分为两类:1. 静态调试 2. 动态调试。 什么意思呢?我们以游戏为例,我们在游戏中进入战斗之前,通常会先对自己的装备、药品等做一些准备,进入战斗之后,这些装备、药品就可以直接使用了,这就是静态调试,

  • 目录 0. bcc安装 0.1 yum 安装 0.2 源码安装 1. cachestat  2. cachetop  3. funccount 4. trace 4.1 trace 4.2 trace查看它的传入的参数 bcc 提供的所有工具就都安装到 /usr/share/bcc/tools 这个目录中了。不过这里提醒你,bcc 软件包默认不会把这些工具配置到系统的 PATH 路径中,所以你得自

  • BCC和libbpf的转换 转载 BCC和libbpf的转换 本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE。BPF CO-RE可以参见上一篇博文。 为什么是libbpf和BPF CO-RE? 历史上,当需要开发一个BPF应用时可以选择BCC 框架,在实现各种用于Tracepoints的BPF程序时需要将BPF程序加载到内核中。BCC提供了内置的Clang编译器,可

  • 如果是Ubuntu 20.04 请参考如下链接安装依赖库: https://github.com/iovisor/bcc/commit/63aade1bef80d81bde82a50c5a2728147073a768 重点是libllvm12 的版本,否则会编译报错。 然后是需要安装libdebuginfod依赖库,这个需要源码安装,可以参考我的博客 elfutils-0.178 configur

  • BCC简介 bcc作为bpf的api库,提供了加载、编译,运行bpf代码功能,其核心功能是对bpf的系统调用进行封装,降低bpf使用门槛。 BCC源码介绍 [root@localhost bcc]# ls build CMakeLists.txt CONTRIBUTING-SCRIPTS.md Dockerfile.debian Dockerfile.ubuntu examples i

  • BCC(Block Check Character),俗称异或校验。BCC的实现方法:将所有数据都和一个指定的初始值(通常是0)异或一次,所得结果为校验值。BCC一般只是用来排错的,并不是加密算法。 示例代码 #include <iostream> #include <string> unsigned char CalcBCC(const std::string &str) { unsigne

 相关资料
  • 处理动态对象时,通常需要跟踪已创建的对象。另一个常见的功能是能够存储和恢复动态对象的状态。在我们动态填充时,使用链表模型(ListModel)可以非常方便的处理这些问题。 在下面的例子中包含了两种元素,火箭和飞机,能够被用户创建和移动。为了控制整个场景动态创建元素,我们使用一个模型来跟踪项。 待完成 插图 模型是一个链表模型(ListModel),用已创建的项进行填充。实例化时跟踪对象引用的资源U

  • 跟踪行为控制着 Entity Framework Core 是否会在其变更跟踪器里维持实体实例的信息。如果实体是被跟踪的,任何检测到的该实体的变更都将在 SaveChanges() 时持久化到数据库中。Entity Framework Core 还会对已跟踪的、之前已加载到 DbContext 实例中的查询和实体进行相互的导航属性装配。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。

  • 在工作中,当通过firebase门户创建动态链接时,我们尝试使用可选的活动跟踪UTM参数。 动态链接工作正常,据我所知,从所有官方文档中可以看出,在创建动态链接时,只需在最后一个可选步骤中添加UTM值,就应该会导致这些值与事件一起发送。 但是,当我们在dynamic_link_app_open事件的事件或转化标签上查看没有看到任何归因值。我们看到该事件正在发送,但我们只是没有获得广告系列归因值,因

  • Trace 事件提供了一种机制,可以集中由 V8,Node 核心, 以及用户代码生成的跟踪信息。 启动 Node.js 应用时添加 --trace-events-enabled 标记,可以启用 Tracing. 可以通过在 --trace-event-categories 标记后跟一个用逗号分隔的类别名称列表, 来指定特定的跟踪记录集合。 node 和 v8 默认启用。 node --trace-

  • 跟踪配置指定了Envoy使用的HTTP跟踪器的全局设置。在服务的顶层配置上定义。未来,Envoy可能会支持其他跟踪器,但现在HTTP跟踪器是唯一支持的跟踪器。 { "http": { "driver": "{...}" } } http (optional, object) 提供HTTP跟踪器的配置。 driver (optional, object) 提供处理跟踪和创建span

  • 概述 分布式跟踪使开发人员可以在大型面向服务的体系结构中获得调用流的可视化。在理解序列化,并行性和延迟来源方面,这是非常宝贵的。Envoy支持系统范围与跟踪相关的三个功能: 请求ID生成:Envoy将在需要时生成UUID并填充x-request-id HTTP头。 应用程序可以转发x-request-id头以进行统一日志记录以及跟踪。 外部跟踪服务集成:Envoy支持可插入的外部跟踪可视化提供程序

  • Bug跟踪是一个宽泛的话题;贯穿本书会讨论此问题的各个方面。尽管这里我们要着重于配置和技术因素,但是首先要从一个策略问题开始:Bug跟踪系统中应该包含哪些信息? 术语Bug跟踪很有误导性。Bug跟踪系统也通常会用来跟踪哪些初始与结束状态不同,包含可选的中间状态,并在生命周期中积累信息的问题,例如新特性请求、一次性任务以及被动性的补丁。由于这些原因,Bug跟踪也被称为问题跟踪(issue track