「ping(メモ)」の編集履歴(バックアップ)一覧に戻る

ping(メモ) - (2007/02/03 (土) 18:52:48) のソース

[[ping]]を読み進める上で残したメモです。

* pingのビルド方法
inetutilsのソースからpingをビルドする手順は、以下のコマンドを入力するだけ。
> $ tar zxvf inetutils-1.5.tar.gz
> $ cd inetutils-1.5
> $ ./configure
> $ make
これでpingコマンドがpingディレクトリに保存される。以降、pingソースを変更した場合はpingディレクトリ下でmakeするだけでオーケー。

※autotoolがよく分かっていないので、ping/Makefileの生成ルールが分からない。ビルド対象のファイルを追加するような場合は、とりあえずはping/Makefileを修正して対応するしかないか・・・。

ちなみに、ここで
> make install
までしてしまうと、既存のコマンドを入れ換えてしまうので注意(入れ換えた方がむしろ良いときもあるけれど)。

* pvtraceの使い方
関数のコールグラフを作成するには、[[IBMのdeveloperWork>http://www-06.ibm.com/jp/developerworks]]の「[[Graphvizによるファンクション・コールの視覚化>http://www-06.ibm.com/jp/developerworks/linux/050722/j_l-graphvis.html]]」で紹介・説明されているpvtraceを使うのが簡単・便利。

**インストール・使用方法
インストールの手順は以下のとおり。なお可視化に必要なgraphvizについては、他のサイトが詳しいので説明を省く。
+pvtraceのダウンロード。[[Graphvizによるファンクション・コールの視覚化>http://www-06.ibm.com/jp/developerworks/linux/050722/j_l-graphvis.html]]の末尾を参照
+適当な場所でmake。pvtraceコマンドが生成される
+(必要に応じて)パスの通った場所にpvtraceをコピー
これによってpvtraceコマンドとターゲットに埋め込むソースinstruction.cが準備できる。

これらを用いた一般的な使用方法は以下のとおり。
+対象のソースを、instruction.cと共にビルド
++gccへのオプションで、「-g」と「-finstrument-functions」を忘れないこと
++対象ソース内にinstruction.c内のコードをコピペしても可
+ビルドしたプログラムを実行。実行後、カレントディレクトリにtrace.txtが生成される
+プログラムとtrace.txtが同じ場所にある状態で、「pvtrace <プログラム名>」を実行。graph.dot生成
+graphvizでgraph.dotをもとにグラフを作成
これだけ。graphvizの使い方は、[[Graphvizチュートリアル>http://homepage3.nifty.com/kaku-chan/graphviz/]]を見ると載っているので、後学のためにも一通り使えるようになっておくとよい。

今回の場合、inetutilsを./configureしたあとにできるping/Makefileに手を入れてコンパイルフラグを設定し、ping.c内の末尾にinstruction.cの内容をコピペすると簡単。
> <ping/Makefile>
> CFLAGS = -g -O2 -finstrument-functions ← -finst~を追加

**参考サイト
-[[Graphvizチュートリアル>http://homepage3.nifty.com/kaku-chan/graphviz/]] - Graphvizの分かりやすい説明が載っている
-[[IBMのdeveloperWork>http://www-06.ibm.com/jp/developerworks]] - 様々なジャンルの開発者向けに優良情報をコンスタントに(!)掲載している
-[[Graphvizによるファンクション・コールの視覚化>http://www-06.ibm.com/jp/developerworks/linux/050722/j_l-graphvis.html]] - pvtraceの使い方が載っている。pvtraceはそもそもこのサイトで紹介されているプログラム
ウィキ募集バナー