簡體   English   中英

異常:執行 sudo opensnoop-bpfcc 時無法將 BPF 附加到 kprobe

[英]Exception: Failed to attach BPF to kprobe when executing sudo opensnoop-bpfcc

當我嘗試執行sudo opensnoop-bpfcc ,我收到以下消息:

In file included from /virtual/main.c:4:
In file included from include/linux/sched.h:14:
In file included from include/linux/pid.h:5:
In file included from include/linux/rculist.h:11:
In file included from include/linux/rcupdate.h:40:
In file included from include/linux/preempt.h:81:
In file included from ./arch/x86/include/asm/preempt.h:7:
In file included from include/linux/thread_info.h:38:
In file included from ./arch/x86/include/asm/thread_info.h:53:
./arch/x86/include/asm/cpufeature.h:150:2: warning: "Compiler lacks ASM_GOTO support. Add -D __BPF_TRACING__ to your compiler arguments"
      [-W#warnings]
#warning "Compiler lacks ASM_GOTO support. Add -D __BPF_TRACING__ to your compiler arguments"
 ^
1 warning generated.
Traceback (most recent call last):
  File "/usr/sbin/opensnoop-bpfcc", line 127, in <module>
    b.attach_kprobe(event="sys_open", fn_name="trace_entry")
  File "/usr/lib/python2.7/dist-packages/bcc/__init__.py", line 526, in attach_kprobe
    raise Exception("Failed to attach BPF to kprobe")
Exception: Failed to attach BPF to kprobe

我不明白如何解決它。 我剛剛使用此命令安裝了密件抄送工具

sudo apt-get install bpfcc-tools linux-headers-$(uname -r)

正如 github 頁面https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---binary所建議的那樣

正在運行的操作系統是 18.04.2 LTS(仿生海狸)。

我不得不從源代碼編譯 bcc 而不是使用包安裝它。

1)安裝linux內核頭文件

sudo apt install linux-headers-$(uname -r)

2)安裝所需的依賴項

sudo apt-get -y install bison build-essential cmake flex git libedit-dev \\ libllvm6.0 llvm-6.0-dev libclang-6.0-dev python zlib1g-dev libelf-dev

3) 從源代碼編譯 bcc

 git clone github.com/iovisor/bcc.git
 mkdir bcc/build; cd bcc/build 
 cmake .. -DCMAKE_INSTALL_PREFIX=/usr 
 make 
 sudo make install 

@Maicake 是對的。 從源代碼編譯和安裝確實對我有用。 以下是在 Ubuntu 22.04 上安裝的步驟:

  1. 按照此處描述的步驟進行操作。 特別是對於 Ubuntu 22.04,您可能需要在克隆密件抄送存儲庫后進行一些更改

  2. 將以下行添加到您的.bashrc文件中:

    export PATH=$PATH:/usr/share/bcc/tools

  3. 創建指向 python3 的符號鏈接,因為大多數工具使用python (不是python3 )來運行腳本。

    sudo ln -s /usr/bin/python3 /usr/bin/python

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM