selflearn @ ウィキ

ping(メモ)

最終更新:

kato

- view
メンバー限定 登録/ログイン
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の「Graphvizによるファンクション・コールの視覚化」で紹介・説明されているpvtraceを使うのが簡単・便利。

インストール・使用方法

インストールの手順は以下のとおり。なお可視化に必要なgraphvizについては、他のサイトが詳しいので説明を省く。
  1. pvtraceのダウンロード。Graphvizによるファンクション・コールの視覚化の末尾を参照
  2. 適当な場所でmake。pvtraceコマンドが生成される
  3. (必要に応じて)パスの通った場所にpvtraceをコピー
これによってpvtraceコマンドとターゲットに埋め込むソースinstruction.cが準備できる。

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

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

参考サイト

タグ:

CodeReading ping
記事メニュー
目安箱バナー