「トレーサ」と呼ばれるデバッグツールの1種。このツールを使ってカーネル内部の各種処理を追跡することで、システムトラブルの原因を詳細に解析できる。

 複雑なシステムトラブルが発生した際、Linuxカーネルが何をしていたかをソースコードレベルで確認しなければ、原因を特定できないことがある。ただしカーネルコードを読みながら、自力で問題の箇所を探し出すのはかなりの重労働だ。

 そこで活躍するのが「トレース」という手法である。トレースは、アプリケーションやカーネルの実行経路(ライブラリや関数を呼ぶ経路)の途上でさまざまな情報を記録することだ。この情報によって、実際の実行経路のどの個所で問題が生じているのか把握できる。このトレースを行うツールがトレーサである。

 その中でもsystemtapは、カーネル内の各種処理を追跡するタイプのトレーサとして良く使われている。独自形式のスクリプトを使い、プログラムのコードを改変することなく、その処理を調査できる。

 具体的にはsystemtapのスクリプト内で、カーネルとユーザーアプリケーションの両方に対し「測定ポイント(プローブ)をどこに仕掛けるか」を指定する。さらにスクリプト中には、「プログラムの処理がプローブを通過する際にどのような処理をさせるか」というロジック(プローブハンドラ)も記述しておく。解析時には対象となるカーネルを対象にスクリプトを実行する。

 これにより、例えば(1)特定のカーネルメッセージが出る箇所にプローブを仕掛ける、(2)プローブ通過時には、その直前までに呼び出された関数の名前や順序などを示す「バックトレース」を標準出力に出力させる、(3)バックトレースを元にトラブルの原因を探っていく、といった使い方ができる。