手机上搭建bcc环境

安装

在Android 系统上比较容易的安装方法是使用类似 eadb 这样的工具,把一个打包好的debian 环境push到手机上,然后chroot 后执行bcc/bpftrace 等工具。我们在内部维护了一个打包了bcc/bpftrace 等工具的debian 镜像。可以按照下面的步骤来快速准备ebpf 分析环境:

环境准备

手机需要root,然后连接USB

Linux 环境

  1. 下载 eadb 工具:可以从Releases · tiann/eadb · GitHub 这里下载最新的 eadb binary,只需要eadb 单个文件就可以。下载完成后把它放到$PATH里可以找到的目录里。
  2. 下载 debian 环境包
  3. 进入 本地拷贝下来的 install 目录,执行:

    ./eadb_install.sh

    这个命令会把相关文件都安装到当前连接设备上的 /data/eadb 这个目录中。

  4. 然后执行下面的命令来进入debian 环境:

    # 假设当前 $PATH 里已经可以找到 eadb

    eadb shell

Windows 环境

  1. 之前的步骤与Linux 环境相同,只是在第3步改为执行:

    eadb_install.bat

  2. 然后执行这个命令来进入 debian 环境

    adb shell -t /data/eadb/run

使用

在按照上面的命令执行后的 debian 环境中,bpftrace 和 bcc 等工具已经可以使用。执行 history 命令来查看一些可用的命令。一些可用命令的示例:

bpftrace

# 使用 uprobe 追踪应用层的一些特别接口

bpftrace -e 'uprobe:/system/lib64/libc.so:pthread_create { printf("%-10u %-6d %-16s %s\n", elapsed,  pid, comm, ustack); }'

# 使用 kprobe 来跟踪kernel 层接口,当前在VR1 上由于 kprobes 接口没启用,暂时不可用

bpftrace -e 'kretprobe:vfs_read { @bytes = lhist(retval, 0, 2000, 200) }'

# 使用 ftrace 来针对raw_syscalls 做一些统计

bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count() }'

# 使用ebpf 的 profile 功能

bpftrace -e 'profile:hz:99 { @[kstack] = count() }'

bcc

# 使用 bcc 包里的execsnoop 工具来追踪执行新进程(exec)的动作

execsnoop-bpfcc

# 使用 bcc 包里的opensnoop 工具来追踪打开新文件的系统调用

opensnoop-bpfcc

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值