「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はそもそもこのサイトで紹介されているプログラム