You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bpftrace在AlmaLinux中使用uprobe时显示“Attaching probe”后挂起求助

bpftrace uprobe追踪挂起问题排查

问题详情

在AlmaLinux系统里用bpftrace结合uprobe做应用追踪时,不管追踪bash还是自己编译的简单测试程序,bpftrace输出Attaching 1 probe...后就直接挂住不动。试过装预编译包、本地编译bpftrace,问题都没解决。

执行命令

root@hostname➜  ~ bpftrace  -e 'uprobe:/bin/bash:main { printf("in here\n"); }'

输出

Attaching 1 probe...

可能的原因

  • 内核缺关键配置:bpftrace依赖内核的BPF相关特性,如果AlmaLinux内核没开CONFIG_UPROBES、CONFIG_BPF、CONFIG_BPF_SYSCALL、CONFIG_DEBUG_INFO_BTF这些选项,uprobe根本没法正常工作。可以用zcat /proc/config.gz | grep -E 'CONFIG_UPROBES|CONFIG_BPF|CONFIG_BPF_SYSCALL|CONFIG_DEBUG_INFO_BTF'查配置,要是有选项没开,得换内核或者重新编译内核把这些特性打开。
  • 目标程序符号被剥离:要是目标程序(比如bash)的main符号被剥离了(编译时加了-s参数或者用strip工具处理过),bpftrace找不到符号对应的地址,探针挂不上就会一直卡着。用nm /bin/bash | grep main能查符号存不存在,要是没有,就得用带完整符号表的程序镜像,或者通过偏移量指定探针位置。
  • SELinux拦着了:AlmaLinux默认开SELinux,要是处于enforcing模式,可能会阻止bpftrace挂载uprobe。可以临时把SELinux设成permissive模式测试:setenforce 0,要是问题解决了,就得给bpftrace加对应的SELinux规则,或者调整策略允许相关操作。
  • BPF资源不够:系统的BPF资源限制太低,比如max_map_entries、max_progs这些参数不够用,bpftrace没法完成探针挂载。用sysctl kernel.bpf能看当前限制,必要时改/etc/sysctl.conf里的对应参数然后生效。
  • 内核版本不兼容:有些旧版本的AlmaLinux内核(比如低于5.4)对BPF和uprobe的支持有bug,或者和bpftrace版本不匹配。试试把内核升到新点的稳定版,再测bpftrace的功能。

内容的提问来源于stack exchange,提问作者Boris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:10:32