名 前
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’
フ ァ イ ル に セ
ー ブ さ れ な い
。履 歴
バ グ