本开发环境是在ubuntu 22.04 搭建
更新GPG key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C8CAB6595FDFF622
更新apt source
root下执行
codename=$(lsb_release -c | awk '{print $2}')
sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
deb http://ddebs.ubuntu.com/ ${codename} main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse
EOF
更新包并安装linux-image-$(uname -r)-dbgsym
sudo apt-get update
sudo apt-get install linux-image-$(uname -r)-dbgsym
准备elfutils环境
在root环境执行
# apt-get install -y elfutils
for file in `find /usr/lib/debug -name '*.ko' -print`
do
buildid=`eu-readelf -n $file| grep Build.ID: | awk '{print $3}'`
dir=`echo $buildid | cut -c1-2`
fn=`echo $buildid | cut -c3-`
mkdir -p /usr/lib/debug/.build-id/$dir
ln -s $file /usr/lib/debug/.build-id/$dir/$fn
ln -s $file /usr/lib/debug/.build-id/$dir/${fn}.debug
done
验证可以使用的functions
# stap -l 'kernel.function("*fork*")' | sort
验证systemtap环境
$ sudo stap -ve 'probe begin { log("hello world") exit() }'
如果能输出hello world,表明环境搭建成功