OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / LDP_man-pages / draft / man3 / backtrace.3
index 12d1bb8..9822d23 100644 (file)
 .\"
 .TH BACKTRACE 3 2008-06-14 GNU "Linux Programmer's Manual"
 .\"O .SH NAME
-.SH Ì¾Á°
+.SH 名前
 .\"O backtrace, backtrace_symbols, backtrace_symbols_fd \- support
 .\"O for application self-debugging
 backtrace, backtrace_symbols, backtrace_symbols_fd \- 
-¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¼«¿È¤Ç¤Î¥Ç¥Ð¥Ã¥°¤Î¥µ¥Ý¡¼¥È
+アプリケーション自身でのデバッグのサポート
 .\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.SH 書式
 .B #include <execinfo.h>
 
 .B int backtrace(void
@@ -55,7 +55,7 @@ backtrace, backtrace_symbols, backtrace_symbols_fd \-
 .B int
 .IB fd );
 .\"O .SH DESCRIPTION
-.SH ÀâÌÀ
+.SH 説明
 .\"O .BR backtrace ()
 .\"O returns a backtrace for the calling program,
 .\"O in the array pointed to by
@@ -67,13 +67,13 @@ backtrace, backtrace_symbols, backtrace_symbols_fd \-
 .\"O is of type \fIvoid *\fP, and is the return address from
 .\"O the corresponding stack frame.
 .BR backtrace ()
-¤Ï¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥°¥é¥à¤Î¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤ò
+は、呼び出したプログラムのバックトレースを
 .I buffer
-¤¬»Ø¤¹ÇÛÎó¤ËÆþ¤ì¤ÆÊÖ¤¹¡£¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤Ï¡¢¥×¥í¥°¥é¥à¤Ç
-¸½ºßÆ°ºîÃæ¤Î´Ø¿ô¸Æ¤Ó½Ð¤·¤ÎʤӤǤ¢¤ë¡£
+が指す配列に入れて返す。バックトレースは、プログラムで
+現在動作中の関数呼び出しの並びである。
 .I buffer
-¤¬»Ø¤¹ÇÛÎó¤Î¸Ä¡¹¤ÎÍ×ÁǤϠ\fIvoid *\fP ·¿¤Ç¡¢
-Âбþ¤¹¤ë¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤«¤é¤Î¥ê¥¿¡¼¥ó¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£
+が指す配列の個々の要素は \fIvoid *\fP 型で、
+対応するスタックフレームからのリターンアドレスである。
 .\"O The
 .\"O .I size
 .\"O argument specifies the maximum number of addresses
@@ -90,19 +90,19 @@ backtrace, backtrace_symbols, backtrace_symbols_fd \-
 .\"O .I size
 .\"O are large enough.
 .I size
-°ú¤­¿ô¤Ï
+引き数は
 .I buffer
-¤Ë³ÊǼ¤Ç¤­¤ë¥¢¥É¥ì¥¹¤ÎºÇÂç¸Ä¿ô¤ò»ØÄꤹ¤ë¡£
-¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤¬
+に格納できるアドレスの最大個数を指定する。
+バックトレースが
 .I size
-¤è¤êÂ礭¤¤¾ì¹ç¡¢
+より大きい場合、
 .I size
-¸Ä¤Îľ¶á¤Î´Ø¿ô¸Æ¤Ó½Ð¤·¤ËÂбþ¤¹¤ë¥¢¥É¥ì¥¹¤¬ÊÖ¤µ¤ì¤ë¡£
-´°Á´¤Ê¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë¤Ï¡¢³Î¼Â¤Ë
+個の直近の関数呼び出しに対応するアドレスが返される。
+完全なバックトレースを取得するためには、確実に
 .I buffer
-¤È
+と
 .I size
-¤¬½½Ê¬Â礭¤¯¤Ê¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¡£
+が十分大きくなるようにすること。
 
 .\"O Given the set of addresses returned by
 .\"O .BR backtrace ()
@@ -112,26 +112,26 @@ backtrace, backtrace_symbols, backtrace_symbols_fd \-
 .\"O translates the addresses into an array of strings that describe
 .\"O the addresses symbolically.
 .BR backtrace ()
-¤Ë¤è¤Ã¤Æ
+によって
 .I buffer
-¤Ë¥¢¥É¥ì¥¹¤Î½¸¹ç¤¬ÆÀ¤é¤ì¤¿¤é¡¢
+にアドレスの集合が得られたら、
 .BR backtrace_symbols ()
-¤Ë¤è¤Ã¤Æ¡¢¥¢¥É¥ì¥¹½¸¹ç¤ò¡¢¤½¤Î¥¢¥É¥ì¥¹¤ò¥·¥ó¥Ü¥ë¤Çɽ¤·¤¿Ê¸»úÎó¤ÎÇÛÎó
-¤ËËÝÌõ¤Ç¤­¤ë¡£
+によって、アドレス集合を、そのアドレスをシンボルで表した文字列の配列
+に翻訳できる。
 .\"O The
 .\"O .I size
 .\"O argument specifies the number of addresses in
 .\"O .IR buffer .
 .I size
-°ú¤­¿ô¤Ï
+引き数は
 .I buffer
-¤Ë³ÊǼ¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Î¿ô¤ò»ØÄꤹ¤ë¡£
+に格納されたアドレスの数を指定する。
 .\"O The symbolic representation of each address consists of the function name
 .\"O (if this can be determined), a hexadecimal offset into the function,
 .\"O and the actual return address (in hexadecimal).
-¸Ä¡¹¤Î¥¢¥É¥ì¥¹¤Î¥·¥ó¥Ü¥ëɽ¸½¤Ï¡¢´Ø¿ô̾ (ÆÃÄê¤Ç¤­¤¿¾ì¹ç)¡¢
-´Ø¿ô¤Ø¤Î¥ª¥Õ¥»¥Ã¥È (16¿Êɽµ­)¡¢¼ÂºÝ¤Î¥ê¥¿¡¼¥ó¥¢¥É¥ì¥¹ (16¿Êɽµ­)
-¤«¤é¹½À®¤µ¤ì¤ë¡£
+個々のアドレスのシンボル表現は、関数名 (特定できた場合)、
+関数へのオフセット (16進表記)、実際のリターンアドレス (16進表記)
+から構成される。
 .\"O The address of the array of string pointers is returned
 .\"O as the function result of
 .\"O .BR backtrace_symbols ().
@@ -143,15 +143,15 @@ backtrace, backtrace_symbols, backtrace_symbols_fd \-
 .\"O (The strings pointed to by the array of pointers
 .\"O need not and should not be freed.)
 .BR backtrace_symbols ()
-¤Î¼Â¹Ô·ë²Ì¤È¤·¤Æ¤Ï¡¢
-ʸ»úÎó¥Ý¥¤¥ó¥¿¤ÎÇÛÎó¤Î¥¢¥É¥ì¥¹¤¬ÊÖ¤µ¤ì¤ë¡£
-¤³¤ÎÇÛÎó¤Ï
+の実行結果としては、
+文字列ポインタの配列のアドレスが返される。
+この配列は
 .BR backtrace_symbols ()
-¤Ë¤è¤Ã¤Æ
+によって
 .BR malloc (3)
-¤µ¤ì¡¢¸Æ¤Ó½Ð¤·Â¦¤Ç free ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
-(¥Ý¥¤¥ó¥¿¤ÎÇÛÎ󤬻ؤ¹¸Ä¡¹¤Îʸ»úÎó¤Ï free ¤¹¤ëɬÍפϤʤ¤¤·¡¢
-free ¤¹¤Ù¤­¤Ç¤â¤Ê¤¤)¡£
+され、呼び出し側で free しなければならない
+(ポインタの配列が指す個々の文字列は free する必要はないし、
+free すべきでもない)。
 
 .\"O .BR backtrace_symbols_fd ()
 .\"O takes the same
@@ -168,23 +168,23 @@ free 
 .\"O .BR malloc (3),
 .\"O and so can be employed in situations where the latter function might fail.
 .BR backtrace_symbols_fd ()
-¤Ï¡¢
+は、
 .BR backtrace_symbols ()
-¤ÈƱ¤¸°ú¤­¿ô
+と同じ引き数
 .I buffer
-¤È
+と
 .I size
-¤ò¤È¤ë¤¬¡¢¸Æ¤Ó½Ð¤·Â¦¤Ëʸ»úÎó¤ÎÇÛÎó¤òÊÖ¤¹Âå¤ï¤ê¤Ë¡¢
-ʸ»úÎó¤ò¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿
+をとるが、呼び出し側に文字列の配列を返す代わりに、
+æ\96\87å­\97å\88\97ã\82\92ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿
 .I fd
-¤Ë 1 ¹Ô¤Ë 1 ¥¨¥ó¥È¥ê¤Î·Á¤Ç½ñ¤­¹þ¤à¡£
+に 1 行に 1 エントリの形で書き込む。
 .BR backtrace_symbols_fd ()
-¤Ï
+は
 .BR malloc (3)
-¤ò¸Æ¤Ó½Ð¤µ¤Ê¤¤¡£
-¤½¤Î¤¿¤á¡¢¤³¤ì¤Ë³¤¯´Ø¿ô¤¬¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¾õ¶·¤Ç¤âÍøÍѤǤ­¤ë¡£
+を呼び出さない。
+そのため、これに続く関数が失敗する可能性がある状況でも利用できる。
 .\"O .SH "RETURN VALUE"
-.SH ÊÖ¤êÃÍ
+.SH 返り値
 .\"O .BR backtrace ()
 .\"O returns the number of addresses returned in
 .\"O .IR buffer ,
@@ -197,18 +197,18 @@ free 
 .\"O then it may have been truncated, in which case the addresses of the
 .\"O oldest stack frames are not returned.
 .BR backtrace ()
-¤Ï
+は
 .I buffer
-¤Ë³ÊǼ¤·¤¿¥¢¥É¥ì¥¹¤Î¸Ä¿ô¤òÊÖ¤¹¡£¤½¤Î¸Ä¿ô¤Ï
+に格納したアドレスの個数を返す。その個数は
 .I size
-¤è¤êÂ礭¤¯¤Ê¤ë¤³¤È¤Ï¤Ê¤¤¡£
-ÊÖ¤êÃͤ¬
+より大きくなることはない。
+返り値が
 .I size
-¤è¤ê¾®¤µ¤¤¾ì¹ç¡¢¥Ð¥Ã¥¯¥È¥ì¡¼¥¹Á´ÂΤ¬³ÊǼ¤µ¤ì¤Æ¤¤¤ë¡£ÊÖ¤êÃͤ¬
+より小さい場合、バックトレース全体が格納されている。返り値が
 .I size
-¤ÈÅù¤·¤¤¾ì¹ç¡¢¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤ÏÀÚ¤êµÍ¤á¤é¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
-ÀÚ¤êµÍ¤á¤é¤ì¤¿¾ì¹ç¡¢ºÇ¤â¸Å¤¤¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤Î¥¢¥É¥ì¥¹¤Ï
-ÊÖ¤µ¤ì¤Ê¤¤¤³¤È¤Ë¤Ê¤ë¡£
+と等しい場合、バックトレースは切り詰められているかもしれない。
+切り詰められた場合、最も古いスタックフレームのアドレスは
+返されないことになる。
 
 .\"O On success,
 .\"O .BR backtrace_symbols ()
@@ -217,12 +217,12 @@ free 
 .\"O by the call;
 .\"O on error, NULL is returned.
 .BR backtrace_symbols ()
-¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢¤³¤Î¸Æ¤Ó½Ð¤·¤Ç
+は、成功すると、この呼び出しで
 .BR malloc (3)
-¤µ¤ì¤¿ÇÛÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
-¥¨¥é¡¼¤Î¾ì¹ç¡¢ NULL ¤òÊÖ¤¹¡£
+された配列へのポインタを返す。
+エラーの場合、 NULL を返す。
 .\"O .SH VERSIONS
-.SH ¥Ð¡¼¥¸¥ç¥ó
+.SH バージョン
 .\"O .BR backtrace (),
 .\"O .BR backtrace_symbols (),
 .\"O and
@@ -231,19 +231,19 @@ free 
 .BR backtrace (),
 .BR backtrace_symbols (),
 .BR backtrace_symbols_fd ()
-¤Ï¥Ð¡¼¥¸¥ç¥ó 2.1 °Ê¹ß¤Î glibc ¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£
+はバージョン 2.1 以降の glibc で提供されている。
 .\"O .SH CONFORMING TO
-.SH ½àµò
+.SH 準拠
 .\"O These functions are GNU extensions.
-¤³¤ì¤é¤Î´Ø¿ô¤Ï GNU ¤Ë¤è¤ë³ÈÄ¥¤Ç¤¢¤ë¡£
+これらの関数は GNU による拡張である。
 .\"O .SH NOTES
-.SH Ãí°Õ
+.SH 注意
 .\"O These functions make some assumptions about how a function's return
 .\"O address is stored on the stack.
 .\"O Note the following:
-¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢´Ø¿ô¤Î¥ê¥¿¡¼¥ó¥¢¥É¥ì¥¹¤¬¥¹¥¿¥Ã¥¯¾å¤Ç¤É¤Î¤è¤¦¤Ë³ÊǼ¤µ¤ì¤ë¤«
-¤Ë´Ø¤·¤Æ¤¢¤ë²¾Äê¤òÃÖ¤¤¤Æ¤¤¤ë¡£
-°Ê²¼¤ÎÅÀ¤ËÃí°Õ¡£
+これらの関数は、関数のリターンアドレスがスタック上でどのように格納されるか
+に関してある仮定を置いている。
+以下の点に注意。
 .IP * 3
 .\"O Omission of the frame pointers (as
 .\"O implied by any of
@@ -251,15 +251,15 @@ free 
 .\"O nonzero optimization levels) may cause these assumptions to be
 .\"O violated.
 .RB ( gcc (1)
-¤Î 0 °Ê³°¤ÎºÇŬ²½¥ì¥Ù¥ë¤Ç°ÅÌۤΤ¦¤Á¤Ë¹Ô¤ï¤ì¤ë)
-¥Õ¥ì¡¼¥à¥Ý¥¤¥ó¥¿¤Î¾Êά¤ò¹Ô¤¦¤È¡¢¤³¤ì¤é¤ÎÁ°Äó¤¬Êø¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
+の 0 以外の最適化レベルで暗黙のうちに行われる)
+フレームポインタの省略を行うと、これらの前提が崩れる可能性がある。
 .IP *
 .\"O Inlined functions do not have stack frames.
-¥¤¥ó¥é¥¤¥ó´Ø¿ô¤Ï¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤ò»ý¤¿¤Ê¤¤¡£
+インライン関数はスタックフレームを持たない。
 .IP *
 .\"O Tail-call optimization causes one stack frame to replace another.
-ËöÈø¸Æ¤Ó½Ð¤·¤ÎºÇŬ²½ (tail-call optimization) ¤ò¹Ô¤¦¤È¡¢
-¤¢¤ë¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤¬Ê̤Υ¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤òÃÖ¤­´¹¤¨¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
+末尾呼び出しの最適化 (tail-call optimization) を行うと、
+あるスタックフレームが別のスタックフレームを置き換える可能性がある。
 .PP
 .\"O The symbol names may be unavailable without the use of special linker
 .\"O options.
@@ -268,27 +268,27 @@ free 
 .\"O linker option.
 .\"O Note that names of "static" functions are not exposed,
 .\"O and won't be available in the backtrace.
-¥·¥ó¥Ü¥ë̾¤ÏÆÃÊ̤ʥê¥ó¥«¡¦¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Ê¤¤¤ÈÍøÍѤǤ­¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¡£
-GNU ¥ê¥ó¥«¤ò»ÈÍѤ¹¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
+シンボル名は特別なリンカ・オプションを使用しないと利用できない場合がある。
+GNU リンカを使用するシステムでは、
 .I \-rdynamic
-¥ê¥ó¥«¡¦¥ª¥×¥·¥ç¥ó¤ò»È¤¦É¬Íפ¬¤¢¤ë¡£
-"static" ¤Ê´Ø¿ô¤Î¥·¥ó¥Ü¥ë̾¤Ï¸ø³«¤µ¤ì¤º¡¢
-¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤Ç¤ÏÍøÍѤǤ­¤Ê¤¤ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
+リンカ・オプションを使う必要がある。
+"static" な関数のシンボル名は公開されず、
+バックトレースでは利用できない点に注意すること。
 .\"O .SH EXAMPLE
-.SH Îã
+.SH 
 .\"O The program below demonstrates the use of
 .\"O .BR backtrace ()
 .\"O and
 .\"O .BR backtrace_symbols ().
 .\"O The following shell session shows what we might see when running the
 .\"O program:
-°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢
+以下のプログラムは、
 .BR backtrace ()
-¤È
+と
 .BR backtrace_symbols ()
-¤Î»ÈÍÑÎã¤ò¼¨¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£
-°Ê²¼¤Ë¼¨¤¹¥·¥§¥ë¤Î¥»¥Ã¥·¥ç¥ó¤Ï¡¢
-¤³¤Î¥×¥í¥°¥é¥à¤òÆ°¤«¤·¤¿ºÝ¤Î¼Â¹ÔÎã¤Ç¤¢¤ë¡£
+の使用例を示したものである。
+以下に示すシェルのセッションは、
+このプログラムを動かした際の実行例である。
 .nf
 .in +4n
 
@@ -306,7 +306,7 @@ backtrace() returned 8 addresses
 .in
 .fi
 .\"O .SS Program source
-.SS ¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹
+.SS ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81®ã\82½ã\83¼ã\82¹
 \&
 .nf
 #include <execinfo.h>
@@ -327,8 +327,8 @@ myfunc3(void)
 
 .\"O     /* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)
 .\"O        would produce similar output to the following: */
-    /* backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO) ¤ò
-       ¸Æ¤Ó½Ð¤·¤Æ¤â¡¢°Ê²¼¤ÈƱÍͤνÐÎϤ¬ÆÀ¤é¤ì¤ë¡£ */
+    /* backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO) 
+       呼び出しても、以下と同様の出力が得られる。 */
 
     strings = backtrace_symbols(buffer, nptrs);
     if (strings == NULL) {
@@ -343,7 +343,7 @@ myfunc3(void)
 }
 
 .\"O static void   /* "static" means don\(aqt export the symbol... */
-static void   /* "static" ¤Ï¥·¥ó¥Ü¥ë¤ò¸ø³«¤·¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë */
+static void   /* "static" はシンボルを公開しないことを意味する */
 myfunc2(void)
 {
     myfunc3();
@@ -371,7 +371,7 @@ main(int argc, char *argv[])
 }
 .fi
 .\"O .SH SEE ALSO
-.SH ´ØÏ¢¹àÌÜ
+.SH 関連項目
 .BR gcc (1),
 .BR ld (1),
 .BR dlopen (3),