bcc的简单学习

发布时间 2023-12-21 06:48:11作者: 济南小老虎

bcc的简单学习


安装

# 安装部分依赖项目
yum install cmake llvm -y 
dnf install -y bison cmake ethtool flex git iperf3 libstdc++-devel python3-netaddr python3-pip gcc gcc-c++ make zlib-devel elfutils-libelf-devel
dnf install -y clang clang-devel llvm llvm-devel llvm-static ncurses-devel
dnf -y install netperf
pip3 install pyroute2

# 源码编译安装
cd /
git clone https://github.com/iovisor/bcc.git

mkdir bcc-build
cd bcc-build/

## here llvm should always link shared library
cmake /bcc -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_LLVM_SHARED=1
make -j10
make install 

# 问题排错
需要注意 如果先安装了 bpftrace 的话会报错如下: 

会报错为:
Traceback (most recent call last):
  File "./tcplife", line 26, in <module>
    from bcc import BPF
  File "/usr/lib/python3.6/site-packages/bcc/__init__.py", line 27, in <module>
    from .libbcc import lib, bcc_symbol, bcc_symbol_option, bcc_stacktrace_build_id, _SYM_CB_TYPE
  File "/usr/lib/python3.6/site-packages/bcc/libbcc.py", line 20, in <module>
    lib.bpf_module_create_b.restype = ct.c_void_p
  File "/usr/lib64/python3.6/ctypes/__init__.py", line 356, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib64/python3.6/ctypes/__init__.py", line 361, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /lib64/libbcc.so.0: undefined symbol: bpf_module_create_b

需要先删除这个包 ,然后手工进行安装

yum remove bpftrace


工具的简单学习

工具目录的位置:
/usr//share/bcc/tools

举例一个简单的的tcplife 
可以使用
./tcplife -stT  -w
查看tcp的连接

./tcpretrans
查看tcp重传的部分.