Branch Tracer for Linux


btraxとは btraxの機能概要 スクリーンショット 適用例 リンク

このプログラムの一部は、「独立行政法人 情報処理推進機構 オープンソースソフトウェア活用基盤整備事業」に係る委託業務の一環として開発しました。

btraxとは

btrax(Branch Tracer for Linux) は、Pentium4, Xeon, Pentium-M CPU のデバッグ機能である最新分岐記録機構を利用した、分岐命令トレーサです。カーネルに変更を加えることなく、カーネル/ドライバおよびアプリケーション/ライブラリの分岐命令実行状況を取得でき、そのログ情報を元に分岐カバレージ情報と実行経路を表示することができます。

btraxプログラム

btraxは、次の2つの機能から構成されます。

分岐命令実行ログ取得機能には、分岐命令トレース用の本体ドライバとは別に、下記に示す、他プロジェクトの開発成果物も含まれています。これらのドライバは、btraxの導入を容易にするため、btraxパッケージに同梱しています。これらは、カーネル2.6.18以降では、カーネルに含まれるもの(kprobes, relayfs)の方が新しいため、そちらを使用し、btrax同梱のものは使いません。将来的には、これらのドライバは同梱されなくなる可能性があります。 ログ解析機能を使用することにより、分岐カバレージ情報と、実行経路を表示することができます。ログ解析機能は、下記のプログラムから構成されます。

コンパイル/実行環境の条件

btraxはPentium4, Xeon, Pentium-M CPUのデバッグ機能を利用しているため、これらのプロセッサを搭載したマシンが必要です。
また、btraxをコンパイル/実行するためには、以下が必要です。 更に、カーネルで下記がサポートされている必要があります。 以下の環境での動作は確認済みです。

btraxの機能概要

トレースログの収集

btraxでは、アプリケーション/ライブラリおよび、カーネル/ドライバのトレースに対応しています。また、システムコールに限定したトレースにも対応しています。これらのトレースでは、以下の点が異なります。 カーネル/システムコール・トレースの開始/終了は、フックを利用しています。フック挿入には、カーネルでkprobesがサポートされている場合はkprobesを使い、サポートされていない場合はdjprobeを使います。djprobeはフックポイントの挿入箇所に制限があります。詳細についてはdjprobeのページを参照して下さい。

トレースログの解析

トレースログの解析では、以下を確認することができます。 分岐実行カバレージでは、関数カバレージと分岐実行カバレージを解析することができます。
システムコールをトレースした場合は、対象システムコールから呼び出される関数に限定したカバレージ解析を行うことができ、更に同一カーネル間や異なるカーネル間のカバレージを比較することができます。

実行経路表示では、簡単な繰り返しチェック機能を備えており、繰り返しを省略して表示することができます。

スクリーンショット

アプリケーション (dav) 実行をトレースした例 ext3_unlink実行以降をトレースした例 システムコールgettimeofdayをトレースした例 システムコールgetpriorityの引き数を変えて同じカーネル上でトレースし、比較した例 システムコールgetpriority(引き数は同じ)を異なるカーネル上でトレースし、比較した例

適用例

btraxは、カーネルのリグレッションテストのツール開発プロジェクトである、crackerjackプロジェクトに適用され、システムコールテストのカバレージを確認するために使用されています。crackerjackプロジェクトの詳細については、crackerjackのページを参照して下さい。

リンク


All Right Reserved, Copyright (C) 2006,2007, Hitachi, Ltd.

This website is hosted by SourceForge.jp