Manpages

名 前

gprof − コ ー ル ・ グ ラ フ (call graph) の プ ロ フ ァ イ ル を 表 示 す る

書 式

gprof [ −abcsz ] [ −e|−E name ] [ −f|−F name ] [ −k fromname toname ] [ objfile [ gmon.out ] ]

説 明

gprof は C, Pascal, Fortran77 プ ロ グ ラ ム の 実 行 プ ロ フ ァ イ ル を 生 成 す る 。 呼 び 出 さ れ た ル ー チ ン の 値 は 呼 び 出 し 元 に 取 り 込 ま れ る 。 プ ロ フ ァ イ ル の た め の デ ー タ は コ ー ル ・ グ ラ フ (call graph: 関 数 コ ー ル の 親 子 関 係 の グ ラ フ ) の プ ロ フ ァ イ ル デ ー タ フ ァ イ ル (デ フ ォ ル ト で は ’gmon.out’) か ら 取 り 込 ま れ る 。 こ の フ ァ イ ル は cc(1)pc(1)f77(1)−pg オ プ シ ョ ン を 指 定 し て コ ン パ イ ル さ れ た プ ロ グ ラ ム に よ っ て 作 成 さ れ る 。 −pg オ プ シ ョ ン で は 、 リ ン ク さ れ る ラ イ ブ ラ リ も プ ロ フ ァ イ ル 用 に コ ン パ イ ル さ れ た も の に な る 。 gprof は 指 定 さ れ た オ ブ ジ ェ ク ト フ ァ イ ル (デ フ ォ ル ト は ’a.out’) か ら シ ン ボ ル テ ー ブ ル を 読 み 、 こ れ と ’gmon.out’ の コ ー ル ・ グ ラ フ ・ プ ロ フ ァ イ ル と を 関 連 付 け る 。 複 数 の プ ロ フ ァ イ ル デ ー タ フ ァ イ ル が 指 定 さ れ た 場 合 に は 、 gprof は そ れ ら の プ ロ フ ァ イ ル 情 報 を す べ て 合 計 し て 表 示 す る 。

gprof は そ れ ぞ れ の ル ー チ ン に よ っ て 消 費 さ れ た 時 間 を 計 算 す る 。 次 に こ れ ら の 時 間 を コ ー ル ・ グ ラ フ の 枝 に 沿 っ て 親 ル ー チ ン へ と 伝 播 さ せ る 。 プ ロ グ ラ ム の サ イ ク ル (cycle: 再 帰 呼 び 出 し の 循 環 ) を ま と め 、 サ イ ク ル へ の コ ー ル を 行 っ た ル ー チ ン は 、 サ イ ク ル で 消 費 し た 時 間 を 共 有 す る と み な す 。 最 初 の リ ス ト は 関 数 で 、 消 費 時 間 の 順 に ソ ー ト さ れ て い る 。 消 費 時 間 に は コ ー ル ・ グ ラ フ で の 子 孫 の 分 も 含 ま れ る 。 そ れ ぞ れ の 関 数 エ ン ト リ の 下 に は 、 そ の 関 数 の コ ー ル ・ グ ラ フ で の (直 接 の ) 子 と 、 そ こ で 消 費 さ れ た 時 間 が ど の よ う に 関 数 に 伝 播 し た か が 表 示 さ れ る 。 同 様 の 表 示 は 関 数 の 上 に も 表 示 さ れ て お り 、 そ の 関 数 と そ れ ら の 子 孫 で 消 費 さ れ た 時 間 が ど の よ う に コ ー ル ・ グ ラ フ の (直 接 の ) 親 へ 伝 播 す る か が 示 さ れ る 。 サ イ ク ル も 表 示 さ れ る 。 サ イ ク ル 全 体 と し て の エ ン ト リ 、 そ の サ イ ク ル に 属 す る メ ン バ ー の リ ス ト と そ れ ぞ れ の メ ン バ ー に よ っ て 消 費 さ れ た 時 間 、 そ の サ イ ク ル の 呼 び 出 し 回 数 な ど が 表 示 さ れ る 。 次 に フ ラ ッ ト プ ロ フ ァ イ ル (prof(1) の 結 果 と 似 た も の ) が 与 え ら れ る 。 こ の リ ス ト で は 合 計 実 行 時 間 、 呼 び 出 し 回 数 、 そ の ル ー チ ン 自 身 で 消 費 し た 時 間 (ミ リ 秒 単 位 )、 子 孫 の 分 も 含 め て 消 費 し た 時 間 (ミ リ 秒 単 位 ) が 表 示 さ れ る 。 最 後 に 関 数 名 の 索 引 が 与 え ら れ る 。

オ プ シ ョ ン

以 下 の オ プ シ ョ ン が 指 定 で き る :

−a ス タ テ ィ ッ ク に 宣 言 さ れ た 関 数 を 表 示 し な い 。 こ の オ プ シ ョ ン が 指 定 さ れ る と 、 ス タ テ ィ ッ ク な 関 数 に 関 す る 全 て の 情 報

(実 行 時 間 、 他 の 関 数 の 呼 び 出 し 、 他 の 関 数 か ら 呼 び 出 さ れ る 関 係 な ど ) は 、 フ ァ イ ル ’objfile’ 中 で こ の ス タ テ ィ ッ ク な 関 数 の 直 前 に ロ ー ド さ れ た 関 数 に 属 す る こ と に な る 。

−b プ ロ フ ァ イ ル の そ れ ぞ れ の フ ィ ー ル ド に 関 す る 説 明 を 表 示 し な い 。

−c プ ロ グ ラ ム の ス タ テ ィ ッ ク な コ ー ル ・ グ ラ フ を 、 オ ブ ジ ェ ク ト フ ァ イ ル の テ キ ス ト セ グ メ ン ト を 調 べ る と い う 発 見 的

(heuristic) な 手 法 で 作 成 す る 。 ス タ テ ィ ッ ク ・ コ ー ル だ け の 親 や 子 の 呼 び 出 し 回 数 は 0 と し て 表 示 す る 。
−e
name ル ー チ ン name と 、 そ の 子 孫 す べ て に 関 す る グ ラ フ プ ロ フ ァ イ ル の エ ン ト リ を 表 示 し な い (子 孫 に 関 し て は 、 別 の 祖 先 が い れ ば 表 示 さ れ る )。 −e オ プ シ ョ ン は 複 数 回 指 定 で き る 。 一 つ の −e オ プ シ ョ ン に つ い て 指 定 で き る name は 一 つ だ け で あ る 。
−E
name

−e と 同 様 に ル ー チ ン name と そ の 子 孫 に 関 す る グ ラ フ プ ロ フ ァ イ ル の エ ン ト リ を 表 示 し な い 。 ま た name (と そ の 子 孫 ) に よ っ て 消 費 さ れ た 時 間 も 、 プ ロ グ ラ ム 実 行 の 総 時 間 (お よ び パ ー セ ン テ ー ジ の 計 算 ) か ら 除 か れ る 。 例 え ば −E mcount −E mcleanup は デ フ ォ ル ト に な っ て い る 。

−f name ル ー チ ン name と そ の 子 孫 に 関 し て の み 、 グ ラ フ プ ロ フ ァ イ ル の エ ン ト リ を 表 示 す る 。 −f オ プ シ ョ ン は 複 数 回 指 定 で き る 。 一 つ の −f オ プ シ ョ ン に つ い て 指 定 で き る name は 一 つ だ け で あ る 。
−F
name

−f と 同 様 に 、 ル ー チ ン name と そ の 子 孫 に 関 し て の み 、 グ ラ フ プ ロ フ ァ イ ル の エ ン ト リ を 表 示 す る 。 ま た こ れ ら に よ っ て 用 い ら れ た 時 間 だ け を 合 計 の 実 行 時 間 と パ ー セ ン テ ー ジ の 計 算 に 用 い る 。 −F オ プ シ ョ ン は 複 数 指 定 で き る 。 一 つ の −F オ プ シ ョ ン に つ い て 指 定 で き る name は 一 つ だ け で あ る 。 −F オ プ シ ョ ン は −E オ プ シ ョ ン に よ る 設 定 を 上 書 き す る 。

−k fromname toname ル ー チ ン fromname か ら ル ー チ ン toname ま で の 枝 を 削 除 す る 。 こ れ は 不 要 な サ イ ク ル の 循 環 を 破 壊 す る の に 便 利 で あ る 。 −k は 複 数 指 定 で き る 。 一 つ の −k オ プ シ ョ ン に 対 し て 指 定 で き る の は 一 組 の ル ー チ ン 名 だ け で あ る 。

−s プ ロ フ ァ イ ル フ ァ イ ル

’gmon.sum’ を 作 成 し 、 指 定 し た プ ロ フ ァ イ ル

フ ァ イ ル の 情 報 す べ て か ら の プ ロ フ ァ イ ル 情 報 を 総 計 し た も の を 書 き 込 む 。 こ の 合 計 プ ロ フ ァ イ ル フ ァ イ ル は 後 に gprof を (お そ ら く は −s と 共 に ) 実 行 す る 際 に 与 え て 、 ’objfile’ フ ァ イ ル を 複 数 回 実 行 し て 得 ら れ た プ ロ フ ァ イ ル デ ー タ を 累 積 す る た め に 用 い る こ と も で き る 。

−v

gprof の バ ー ジ ョ ン 番 号 を 表 示 し て 終 了 す る 。

−z

用 い ら れ な か っ た 関 数 (呼 び 出 し 回 数 と 実 行 時 間 で わ か る ) も 表 示 す る 。 こ れ を −c オ プ シ ョ ン と 共 に 用 い る と 、 呼 び 出 さ れ な か っ た ル ー チ ン を 見 つ け る の に 役 に 立 つ 。

フ ァ イ ル

a.out 名 前 の リ ス ト と テ キ ス ト 空 間
gmon.out ダ イ ナ ミ ッ ク な コ ー ル ・ グ ラ フ と プ ロ フ ァ イ ル
gmon.sum ダ イ ナ ミ ッ ク な コ ー ル ・ グ ラ フ と プ ロ フ ァ イ ル の ま と め

関 連 項 目

monitor(3), profil(2), cc(1), prof(1)

’’An Execution Profiler for Modular Programs’’, by S. Graham, P. Kessler, M. McKusick; Software − Practice and Experience, Vol. 13, pp. 671-685, 1983.

’’gprof: A Call Graph Execution Profiler’’, by S. Graham, P. Kessler, M. McKusick; Proceedings of the SIGPLAN ’82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, pp. 120-126, June 1982.

履 歴

gprof は 4.2 BSD か ら 登 場 し た 。

バ グ

サ ン プ リ ン グ の 粒 度 (granularity) も 表 示 さ れ る が 、 せ い ぜ い 統 計 的 な も の で し か な い 。 こ こ で は 関 数 の 一 回 あ た り の 実 行 時 間 は 、 関 数 の 消 費 し た 合 計 時 間 を 呼 び 出 し 回 数 で 割 っ た も の と 仮 定 し て い る 。 し た が っ て 、 呼 び 出 し グ ラ フ の 枝 を 伝 播 し て 関 数 の 親 に 伝 わ る 時 間 は 、 枝 を 通 過 し た 回 数 に 直 に 比 例 す る こ と に な る 。 自 分 自 身 が プ ロ フ ァ イ ル さ れ て い な い 親 で も 、 子 か ら 伝 播 し て く る 時 間 を 保 有 す る こ と に な る 。 し か し こ れ ら の ル ー チ ン は 、 呼 び 出 し グ ラ フ の 中 で (ど こ か ら 呼 び 出 さ れ た の で も な く ) 勝 手 に 起 動 す る よ う に 見 え る の で 、 そ の 時 間 は そ れ 以 上 ど こ へ も 伝 播 し な い 。 同 様 に 、 シ グ ナ ル を キ ャ ッ チ し た ル ー チ ン は 、 プ ロ フ ァ イ ル さ れ て い て も 勝 手 に 起 動 す る よ う に 見 え て し ま う (理 由 は も う 少 し 複 雑 だ が )。 シ グ ナ ル を キ ャ ッ チ し た ル ー チ ン の 子 が プ ロ フ ァ イ ル さ れ て い れ ば そ の 時 間 を 正 し く 伝 播 さ せ る こ と が で き る が 、 親 ル ー チ ン が プ ロ フ ァ イ ル ル ー チ ン の 途 中 で シ グ ナ ル が キ ャ ッ チ さ れ た 場 合 に は 全 て の 情 報 は 失 わ れ る 。 プ ロ フ ァ イ ル さ れ る プ ロ グ ラ ム は exit(2) を コ ー ル し て 終 了 す る か 、 main ル ー チ ン か ら の return で 終 了 し な け れ ば な ら な い 。 さ も な い と 終 了 時 に プ ロ フ ァ イ ル 情 報 が ’gmon.out’ フ ァ イ ル に セ ー ブ さ れ な い 。