Blog
Blog copied to clipboard
systemtap安装使用
##安装 不要用apt install方式安装,踩过的坑。。最好用源码安装。
$ sudo apt remove systemtap
$ sudo apt install g++ make git libelf-dev libdw-dev
$ git clone git://sourceware.org/git/systemtap.git
$ cd systemtap/
$ ./configure && make // no errors
$ sudo make install
$ sudo stap -e 'probe begin { printf("Hello, World!\n"); exit() }'
[sudo] password for jason:
Hello, World!
安装debug包
下面的操作都是基于Ubuntu18.04平台
- 添加GPG key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C8CAB6595FDFF622
- 添加repository
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
- 更新镜像源
sudo apt-get update
- 下载debugging symbols
sudo apt-get install linux-image-$(uname -r)-dbgsym
- 生成systemtap/libelf所需的模块信息。将如下命令放入debug_ko.sh
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
比较慢,好像不加也可以? 最后测试
$ sudo stap -e 'probe begin { printf("Hello, World!\n"); exit() }'
[sudo] password for jason:
Hello, World!
参考资料
Installing Ubuntu Kernel Debugging Symbols ubuntu安装systemtap
后续更新systemtap调试使用方法 https://vcpu.me/systemtap%E4%BD%BF%E7%94%A8%E8%B0%83%E8%AF%95%E8%AE%B0%E5%BD%95%EF%BC%88%E4%B8%80%EF%BC%89/ https://stackoverflow.com/questions/29840213/how-do-i-trace-a-system-call-in-linux http://www.lenky.info/archives/2013/02/2209