Ubuntu 14.04 で DTRACE に近い機能を実現する SystemTap を使うための方法。
いくつか参考になる情報があるけど、どうもうまくいかない。
- Install SystemTap in Ubuntu 14.04 – Jeff Li
- Installing SystemTap on Ubuntu 14.04 LTS | nickjpavey
- SystemTap メモ – myokotaの日記
Ubuntu 14.04 (trusty) のリポジトリの SystemTap のバージョンは 2.3 で、これが古くてアップデートされたカーネル(自分の場合は 3.16.0-50)に対応していないのではないかと予想。SystemTap 公式を参考にして最新版をインストールしたところ、使えるようになった。
- 必要なパッケージのインストール
$ sudo apt-get install gcc g++ elfutils libdw-dev
- カーネルの dbgsym のインストール
- ddebs リポジトリの追加
$ 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-key adv --keyserver keyserver.ubuntu.com --recv-keys ECDCAD72428D7C01 $ sudo apt-get update
- カーネルの dbgsym パッケージのインストール
$ sudo apt-get install linux-image-$(uname -r)-dbgsym
- ddebs リポジトリの追加
- SystemTap の入手・インストール
- SystemTap の動作確認
以下のようになれば OK$ sudo stap -e 'probe begin { println("Hello, World!") exit() }' Hello, World!