groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with


From: Werner LEMBERG
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Mon, 13 Dec 2010 18:56:17 +0100 (CET)

>> Any progress on the docs?
> 
> Please find below a patch to the docs.  Sorry for the delay.

Thanks!  I've revised all patches, updated the documentation,
normalized the import of gnulib's wcwidth, fixed a buglet in the new
`.class' request (each call caused insertion of an empty line), and it
seems that everything works fine!

Attached is a Japanese man page, gprof.1 – this is in EUC-JP
encoding –, which I've taken from the Japanese man page project
(http://sourceforge.jp/projects/linuxjm/), together with its output,
generated with

  groff -K euc-japan -Tutf8 -ww -man -mja gprof.1 > gprof.jp.txt

(You should use `less' or something similar for display since the
output contains SGR escape sequences.)

The only thing which I consider bad is that there is `(' at the line
end.  Can this be improved by adjusting the calls to .cflags?


    Werner
.\" Copyright (c) 1983, 1990 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms are permitted provided
.\" that: (1) source distributions retain this entire copyright notice and
.\" comment, and (2) distributions including binaries display the following
.\" acknowledgement:  ``This product includes software developed by the
.\" University of California, Berkeley and its contributors'' in the
.\" documentation or other materials provided with the distribution and in
.\" all advertising materials mentioning features or use of this software.
.\" Neither the name of the University nor the names of its contributors may
.\" be used to endorse or promote products derived from this software without
.\" specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\"     @(#)gprof.1     6.6 (Berkeley) 7/24/90
.\"
.\" Japanese Version Copyright (c) 1997-2000 NAKANO Takeo all rights reserved.
.\" Translated Fri Jan 9 1998 by NAKANO Takeo <nakano@@apm.seikei.ac.jp>
.\" Updated Fri 27 Oct 2000 by NAKANO Takeo
.\"
.TH GPROF 1 "January 29, 1993"
.SH 名前
gprof \- コール・グラフ (call graph) のプロファイルを表示する
.SH 書式
.B gprof [ \-abcsz ] [ \-e|\-E
.I name
.B ] [ \-f|\-F 
.I name
.B ] 
.B [ \-k
.I fromname toname
.B ] [ 
.I objfile
.B [ 
.I gmon.out
.B ] 
.B ] 
.SH 説明
.B gprof
は C, Pascal, Fortran77 プログラムの実行プロファイルを生成する。呼び出
されたルーチンの値は呼び出し元に取り込まれる。プロファイルのためのデー
タはコール・グラフ (call graph: 関数コールの親子関係のグラフ) のプロファ
イルデータファイル (デフォルトでは `gmon.out') から取り
込まれる。このファイルは
.BR cc ( 1 ) 、
.BR pc ( 1 ) 、
.BR f77 ( 1 )
で
.B \-pg
オプションを指定してコンパイルされたプログラムによって作成される。
.B \-pg
オプションでは、リンクされるライブラリもプロファイル用にコンパイルされ
たものになる。
.B gprof
は指定されたオブジェクトファイル (デフォルトは `a.out') からシンボ
ルテーブルを読み、これと `gmon.out' のコール・グラフ・プロファイルとを
関連付ける。
複数のプロファイルデータファイルが指定された場合には、
.B gprof
はそれらのプロファイル情報をすべて合計して表示する。
.PP
.B gprof
はそれぞれのルーチンによって消費された時間を計算する。次にこれらの時間
をコール・グラフの枝に沿って親ルーチンへと伝播させる。プログラムの 
サイクル (cycle: 再帰呼び出しの循環) をまとめ、サイクルへのコールを行っ
たルーチンは、サイクルで消費した時間を共有するとみなす。最初のリストは
関数で、消費時間の順にソートされている。
消費時間にはコール・グラフでの子孫の分も含まれる。それぞれの関数エントリ
の下には、その関数のコール・グラフでの (直接の) 子と、そこで消費された
時間がどのように関数に伝播したかが表示される。同様の表示は関数の上にも
表示されており、その関数とそれらの子孫で消費された時間がどのようにコー
ル・グラフの (直接の) 親へ伝播するかが示される。
.PP
サイクルも表示される。サイクル全体としてのエントリ、そのサイクルに属す
るメンバーのリストとそれぞれのメンバーによって消費された時間、その 
サイクルの呼び出し回数などが表示される。
.PP
次にフラットプロファイル
.RB ( prof (1)
の結果と似たもの) が与えられる。このリストでは合計実行時間、呼び出し回
数、そのルーチン自身で消費した時間 (ミリ秒単位)、子孫の分も含めて消費
した時間 (ミリ秒単位) が表示される。
.PP
最後に関数名の索引が与えられる。
.SH オプション
以下のオプションが指定できる:
.TP
.B \-a
スタティックに宣言された関数を表示しない。このオプションが指定され
ると、スタティックな関数に関する全ての情報 (実行時間、他の関数の呼び出
し、他の関数から呼び出される関係など) は、ファイル `objfile' 中でこの
スタティックな関数の直前にロードされた関数に属することになる。
.TP
.B \-b
プロファイルのそれぞれのフィールドに関する説明を表示しない。
.TP
.B \-c
プログラムのスタティックなコール・グラフを、オブジェクトファイルのテキ
ストセグメントを調べるという発見的 (heuristic) な手法で作成する。ス
タティック・コールだけの親や子の呼び出し回数は 0 として表示する。
.TP
.BI "\-e " name
ルーチン
.I name
と、その子孫すべてに関するグラフプロファイルのエントリを表示しない 
(子孫に関しては、別の祖先がいれば表示される)。
.B \-e
オプションは複数回指定できる。一つの
.B \-e
オプションについて指定できる
.I name
は一つだけである。
.TP
.BI "\-E " name
.B \-e
と同様にルーチン
.I name
とその子孫に関するグラフプロファイルのエントリを表示しない。また
.I name
(とその子孫) によって消費された時間も、プログラム実行の総時間 (および
パーセンテージの計算) から除かれる。例えば
.BI "\-E " mcount
.BI "\-E " mcleanup
はデフォルトになっている。
.TP
.BI "\-f " name
ルーチン
.I name
とその子孫に関してのみ、グラフプロファイルのエントリを表示する。
.B \-f
オプションは複数回指定できる。一つの
.B \-f
オプションについて指定できる
.I name
は一つだけである。
.TP
.BI "\-F " name
.B \-f
と同様に、ルーチン
.I name
とその子孫に関してのみ、グラフプロファイルのエントリを表示する。またこ
れらによって用いられた時間だけを合計の実行時間とパーセンテージの計算に
用いる。
.B \-F
オプションは複数指定できる。一つの
.B \-F
オプションについて指定できる
.I name
は一つだけである。
.B \-F
オプションは
.B \-E
オプションによる設定を上書きする。
.TP
.BI "\-k " "fromname toname"
ルーチン
.I fromname
からルーチン
.I toname
までの枝を削除する。これは不要なサイクルの循環を破壊するのに便利である。
.B \-k
は複数指定できる。一つの
.B \-k
オプションに対して指定できるのは一組のルーチン名だけである。
.TP
.B \-s
プロファイルファイル `gmon.sum' を作成し、指定したプロファイルファイル
の情報すべてからのプロファイル情報を総計したものを書き込む。この合計プ
ロファイルファイルは後に gprof を (おそらくは
.B \-s
と共に) 実行する際に与えて、 `objfile' ファイルを複数回実行して得られ
たプロファイルデータを累積するために用いることもできる。
.TP
.B \-v
gprof のバージョン番号を表示して終了する。
.TP
.B \-z
用いられなかった関数 (呼び出し回数と実行時間でわかる) も表示する。これ
を
.B \-c
オプションと共に用いると、呼び出されなかったルーチンを見つけるのに役
に立つ。
.PP
.SH ファイル
a.out       名前のリストとテキスト空間
.br
gmon.out    ダイナミックなコール・グラフとプロファイル
.br
gmon.sum    ダイナミックなコール・グラフとプロファイルのまとめ

.SH 関連項目
.BR monitor ( 3 ) ,
.BR profil ( 2 ) ,
.BR cc ( 1 ) ,
.BR prof ( 1 )
.sp
``An Execution Profiler for Modular Programs'',
by S. Graham, P. Kessler, M. McKusick;
.I
Software \- Practice and Experience,
Vol. 13, pp. 671-685, 1983.
.sp
``gprof: A Call Graph Execution Profiler'',
by S. Graham, P. Kessler, M. McKusick;
.I
Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 1982.

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



名前
       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  
Con‐
       struction, SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 
1982.


履歴
       gprof は 4.2 BSD から登場した。

バグ
       サンプリングの粒度  (granularity)  も表示されるが、せいぜい統計的なもの
       でしかない。ここでは関数の一回あたりの実行時間は、関数の消費した合計時
       間を呼び出し回数で割ったものと仮定している。したがって、呼び出しグラフ
       の 枝を伝播して関数の親に伝わる時間は、枝を通過した回数に直に比例するこ
       と になる。

       自分自身がプロファイルされていない親でも、子から伝播してくる時間を保有
       することになる。しかしこれらのルーチンは、呼び出しグラフの中で  (どこか
       ら呼び出されたのでもなく)  勝手に起動するように見えるので、その時間はそ
       れ以上どこへも伝播しない。同様に、シグナルをキャッチしたルーチンは、プ
       ロファイルされていても勝手に起動するように見えてしまう  (理由はもう少し
       複雑だが)。シグナルをキャッチしたルーチンの子がプロファイルされてい  れ
       ばその時間を正しく伝播させることができるが、親ルーチンがプロファ イルル
       ーチンの途中でシグナルがキャッチされた場合には全ての情報は失われる。

       プロファイルされるプログラムは exit(2) をコールして終了するか、 main ル
       ーチンからの return で終了しなければな らない。さもないと終了時にプロフ
       ァイル情報が `gmon.out' ファイルにセー ブされない。



                               January 29, 1993                       GPROF(1)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]