diff options
Diffstat (limited to 'documentation/manual-pages/ja/man4/ddb.4')
-rw-r--r-- | documentation/manual-pages/ja/man4/ddb.4 | 580 |
1 files changed, 580 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man4/ddb.4 b/documentation/manual-pages/ja/man4/ddb.4 new file mode 100644 index 0000000000..4ada0b1f32 --- /dev/null +++ b/documentation/manual-pages/ja/man4/ddb.4 @@ -0,0 +1,580 @@ +.\" +.\" Mach Operating System +.\" Copyright (c) 1991,1990 Carnegie Mellon University +.\" All Rights Reserved. +.\" +.\" Permission to use, copy, modify and distribute this software and its +.\" documentation is hereby granted, provided that both the copyright +.\" notice and this permission notice appear in all copies of the +.\" software, derivative works or modified versions, and any portions +.\" thereof, and that both notices appear in supporting documentation. +.\" +.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" +.\" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR +.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. +.\" +.\" Carnegie Mellon requests users of this software to return to +.\" +.\" Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU +.\" School of Computer Science +.\" Carnegie Mellon University +.\" Pittsburgh PA 15213-3890 +.\" +.\" any improvements or extensions that they make and grant Carnegie Mellon +.\" the rights to redistribute these changes. +.\" +.\" changed a \# to #, since groff choked on it. +.\" +.\" HISTORY +.\" ddb.4,v +.\" Revision 1.1 1993/07/15 18:41:02 brezak +.\" Man page for DDB +.\" +.\" Revision 2.6 92/04/08 08:52:57 rpd +.\" Changes from OSF. +.\" [92/01/17 14:19:22 jsb] +.\" Changes for OSF debugger modifications. +.\" [91/12/12 tak] +.\" +.\" Revision 2.5 91/06/25 13:50:22 rpd +.\" Added some watchpoint explanation. +.\" [91/06/25 rpd] +.\" +.\" Revision 2.4 91/06/17 15:47:31 jsb +.\" Added documentation for continue/c, match, search, and watchpoints. +.\" I've not actually explained what a watchpoint is; maybe Rich can +.\" do that (hint, hint). +.\" [91/06/17 10:58:08 jsb] +.\" +.\" Revision 2.3 91/05/14 17:04:23 mrt +.\" Correcting copyright +.\" +.\" Revision 2.2 91/02/14 14:10:06 mrt +.\" Changed to new Mach copyright +.\" [91/02/12 18:10:12 mrt] +.\" +.\" Revision 2.2 90/08/30 14:23:15 dbg +.\" Created. +.\" [90/08/30 dbg] +.\" +.\" %Id: ddb.4,v 1.6 1997/04/12 21:54:48 joerg Exp % +.\" $FreeBSD$ +.\" +.\" WORD: wired ハードコーディングされた [Jargon File] +.\" WORD: modifier 修飾子 +.\" +.Dd January 16, 1996 +.Dt DDB 4 +.Os FreeBSD +.Sh 名称 +.Nm ddb +.Nd 対話型カーネルデバッガ +.Sh 書式 +.Cd options DDB +.Sh 解説 +.Nm +カーネルデバッガは古い kdb のほとんどの機能を、 +.Xr gdb 1 +の影響を受けた合理的なシンタックスでサポートしています。 +.Pp +現在のロケーションは `dot' と呼ばれます。 +`dot' はプロンプトに 16 進数の形式で表示されます。 +検査と書き込みコマンドは、 +最後に検査したか最後に変更したロケーションに `dot' を更新します。 +そして、`next' を次に検査もしくは変更するロケーションのアドレスにセットします。 +他のコマンドは `dot' を変更せず、`next' を `dot' と同じにします。 +.Pp +一般的なコマンドシンタックスは +.Cm command Ns Op Li \&/ Ns Ar modifier +.Ar address Ns Op Li , Ns Ar count +となります。 +.Pp +空白行は直前のコマンドをアドレス `next' からカウントを 1、 +修飾子 (modifier) なしとして繰り返し実行します。 +.Ar address +を指定すると `dot' はそのアドレスに設定されます。 +.Ar address +を省略すると `dot' がアドレスとして使われます。 +.Ar count +が指定されないと、表示コマンドに対しては 1 が指定されたものとされ、 +スタックトレースに対しては無限が指定されたものとなります。 +.Pp +.Nm +デバッガは出力に対し +.Xr more 1 +のような機能をサポートしています。 +出力行が変数 +.Li \&$lines +で指定されている数を越えると、 +.Dq Em --db_more-- +を表示し応答を待ちます。 +これに対する有効な応答は以下の通りです。 +.Pp +.Bl -tag -compact -width SPC +.It Li SPC +次の 1 ページを表示します +.It Li RET +次の 1 行を表示します +.It Li q +現在のコマンドを中断し、コマンド入力モードに戻ります +.El +.Pp +.Nm +は小さい (現在は 10 項目) コマンドヒストリや、 +簡単な Emacs 風のコマンド行編集機能を提供しています。 +Emacs のコントロールキーに加え、 +通常の ANSI の矢印キーでもヒストリバッファをブラウズしたり、 +現在行の中でカーソルを動かしたりすることができるでしょう。 +.Sh コマンド +.Bl -ohang -compact +.It Cm examine +.It Cm x +修飾子のフォーマットによって、 +指定されたアドレスロケーションの内容を表示します。 +複数の修飾子を指定すると、複数のロケーションが表示されます。 +フォーマットが指定されないと、 +このコマンドに最後に使われたフォーマットが使われます。 +.Pp +フォーマット文字は以下の通りです。 +.Bl -tag -compact -width indent +.It Li b +バイト (8 ビット) で表示します。 +.It Li h +ハーフワード (16 ビット) で表示します。 +.It Li l +ロングワード (32 ビット) で表示します。 +.It Li a +表示されたロケーションを表示します。 +.It Li A +可能ならばロケーションを行番号で表示します。 +.It Li x +符号無しの 16 進数で表示します。 +.It Li z +符号付きの 16 進数で表示します。 +.It Li o +符号無しの 8 進数で表示します。 +.It Li d +符号付きの 10 進数で表示します。 +.It Li u +符号無しの 10 進数で表示します。 +.It Li r +現在の基数を符号付きで表示します。 +.It Li c +下位 8 ビットを文字として表示します。 +表示できない文字は 8 進数のエスケープコード (例: `\e000') +で表示されます。 +.It Li s +そのロケーションをナル文字で終了する文字列として表示します。 +表示できない文字は 8 進数のエスケープコードで表示されます。 +.It Li m +各行末に文字ダンプをつけて符号無しの 16 進数で表示します。 +各行頭にロケーションも 16 進数で表示されます。 +.It Li i +命令として表示します。 +.It Li I +マシンに依存したおそらく別のフォーマットで命令として表示します。 +.Bl -tag -width MIPS -compact +.It Tn VAX +外部ラベルを手続きのエントリマスクとして想定しません。 +.It Tn i386 +続くロングワードの境界の丸めを行いません。 +.It Tn MIPS +レジスタの内容を表示します。 +.El +.El + +.It Cm xf +前方検査: +最後に指定されたパラメータを使って、検査コマンドを実行します。 +最後に実行されたコマンドによって表示されたアドレスが +開始アドレスとして使われます。 + +.It Cm xb +後方検査: +最後に指定されたパラメータを使って、検査コマンドを実行します。 +最後に実行されたコマンドによって表示されたアドレスから +表示されたもののサイズを引いた結果が開始アドレスとして使われます。 + +.It Cm print Ns Op Cm /acdoruxz +指定された修飾子文字 (上述の +.Li examine +参照) にしたがって、 +.No Ar addr +を表示します。 +有効なフォーマットは +.Li a , +.Li x , +.Li z , +.Li o , +.Li d , +.Li u , +.Li r , +.Li c +です。 +修飾子が指定されないと、最後に指定されたものが使われます。 +.Ar addr +は文字列で指定することができます。 +その場合はその通りに表示されます。 +例えば、 +.Bd -literal -offset indent +print/x \&"eax = \&" $eax \&"\enecx = \&" $ecx \&"\en\&" +.Ed +.Pp +は次のように表示されます。 +.Bd -literal -offset indent +eax = xxxxxx +ecx = yyyyyy +.Ed + +.It Xo +.Cm write Ns Op Cm /bhl +.No Ar addr Ar expr1 Op Ar "expr2 ..." +.Xc +コマンド行で +.Ar addr +の後に指定された式を +.Ar addr +からはじまるロケーションに書き込みます。 +書き込みサイズの単位は修飾子として文字 +.Li b +(バイト), +.Li h +(ハーフワード), +.Li l +(ロングワード) としてそれぞれ指定できます。 +これが省略されると、ロングワードが指定されたものとみなされます。 +.Pp +.Sy 警告 : +式の間にはデリミタがないので、奇妙なことが起こり得ます。 +各式は括弧で括ったほうがいいでしょう。 + +.It Xo +.Cm set +.No Li \&$ Ns Ar variable +.Op Li = +.Ar expr +.Xc +名前つき変数やレジスタに +.Ar expr +の値をセットします。 +有効な変数名は後述します。 + +.It Cm break Ns Op Cm /u +.Ar addr +にブレークポイントをセットします。 +.Ar count +が指定されたら、ブレークポイントで停止するまで、 +.Ar count +- 1 回継続します。 +ブレークポイントがセットされたら、ブレークポイント番号が +.Sq Li \&# +で表示されます。 +この数字はブレークポイントを削除したり、 +それに条件を追加するのに使うことができます。 +.Pp +修飾子 +.Li u +が指定されると、 +このコマンドはユーザ空間アドレスにブレークポイントをセットします。 +.Li u +オプションが指定されない場合は、 +アドレスはカーネル空間のものであると判断され、 +空間アドレスが間違っていると、 +それは受け付けられずエラーメッセージが表示されます。 +この修飾子は +マシン依存ルーチンによってサポートされているときのみ使うことができます。 +.Pp +.Sy 警告 : +ユーザテキストが通常のユーザ空間デバッガによってシャドウされている場合は、 +ユーザ空間のブレークポイントは正しく動作しません。 +また、低レベルのコードパスにおいてブレークポイントをセットすると +奇妙なことも起こるかもしれません。 + +.It Cm delete Ar addr +.It Cm delete Li \&# Ns Ar number +ブレークポイントを削除します。 +削除対象のブレークポイントは +.Li # +でブレークポイント番号を指定するか、 +元の +.Cm break +コマンドで指定したものと同じ +.Ar addr +によって指定します。 + +.It Cm step Ns Op Cm /p +.Ar count +回シングルステップで実行します +(ここではコンマは必ず付けなければなりません)。 +修飾子 +.Li p +が指定されると、各ステップ毎に命令を表示します。 +これが指定されない場合は、最後の命令のみを表示します。 +.Pp +.Sy 警告 : +マシンのタイプによって異なります。 +いくつかの低レベルのコードパスやユーザコードのシングルステップ実行は +できないかもしれません。 +ソフトウェアによってシングルステップをエミュレートしているマシン +(例: pmax) では、割り込みハンドラで実行されているコードからの +ステップ実行はおそらく間違ったことを行うことになるでしょう。 + +.It Cm continue Ns Op Cm /c +ブレークポイントかウォッチポイントまで実行を継続します。 +修飾子 +.Li c +が指定されると、実行中の命令をカウントします。 +pmax のようないくつかのマシンでは load と store もカウントします。 +.Pp +.Sy 警告 : +カウント中はデバッガは何も表示せずにシングルステップを実行しています。 +これは低レベルのコードでのシングルステップ実行が奇妙な振舞いを引き起こす +かもしれないことを意味しています。 + +.It Cm until Ns Op Cm /p +次の call か return 命令で止まります。 +修飾子 +.Li p +が指定されると、 +深くネストした call と命令の累積カウントを各 call もしくは return +で表示します。 +この指定がなければ、マッチする return にヒットした時にのみ表示します。 + +.It Cm next Ns Op Cm /p +.It Cm match Ns Op Cm /p +マッチする return 命令で止まります。 +修飾子 +.Li p +が指定されると、 +深くネストした call と命令の累積カウントを各 call もしくは return +で表示します。 +この指定がなければ、マッチする return にヒットした時にのみ表示します。 + +.It Xo +.No Cm trace Ns Op Cm /u +.Op Ar frame +.Op Ar ,count +.Xc +スタックトレース。 +オプション +.Li u +を指定すると、ユーザ空間をトレースします。 +これがなければ、 +.Cm trace +はカーネル空間のみをトレースします。 +.Ar count +はトレースされるフレーム数です。 +.Ar count +が省略されると、全てのフレームが表示されます。 +.Pp +.Sy 警告 : +ユーザ空間スタックトレースは、 +マシン依存コードによってサポートされている場合のみ有効となります。 + +.It Xo +.No Cm search Ns Op Cm /bhl +.Ar addr +.Ar value +.Op Ar mask +.Op Ar ,count +.Xc +メモリ中で +.Ar value +を検索します。 +もし検索した値が見つからなければ、 +このコマンドは興味深い方法で失敗するでしょう。 +これは ddb がメモリを不正にアクセスした場合に常にリカバーしているわけでは +ないことに起因しています。 +オプションの引数 +.Ar count +によって検索を制限します。 + +.It Cm show all procs Ns Op Cm /m +.It Cm ps Ns Op Cm /m +全てのプロセスの情報を表示します。 +プロセスの情報はマシンによってサポートされていない場合や、 +ターゲットのプロセスのスタックの底がその時にメインメモリにない場合は +表示されないかもしれません。 +修飾子 +.Li m +によって、プロセスの VM マップアドレスを表示し、 +他の情報を表示しないようにできます。 + +.It Cm show registers Ns Op Cm /u +レジスタセットを表示します。 +オプション +.Li u +が指定されると、カーネルか現在セーブされているものの代わりに +ユーザレジスタが表示されます。 +.Pp +.Sy 警告 : +修飾子 +.Li u +のサポートはマシンに依ります。 +サポートされていない場合は、正しくない情報が表示されるでしょう。 + +.It Xo +.Cm show map Ns Op Cm /f +.Ar addr +.Xc +.Ar addr +における VM マップを表示します。 +修飾子 +.Li f +が指定されると、完全なマップが表示されます。 + +.It Xo +.Cm show object Ns Op Cm /f +.Ar addr +.Xc +.Ar addr +における VM オブジェクトを表示します。 +オプション +.Li f +が指定されると、完全なオブジェクトが表示されます。 + +.It Cm "show watches" +全てのウォッチポイントを表示します。 + +.It Xo +.Cm watch +.No Ar addr Ns Li \&, Ns Ar size +.Xc +ある領域にウォッチポイントをセットします。 +その領域への変更が試みられた時に、実行は停止します。 +引数 +.Ar size +のデフォルトは 4 です。 +間違った空間アドレスを指定すると、その要求は拒否されエラーメッセージが +表示されます。 +.Pp +.Sy 警告 : +ハードコーディングされたカーネルメモリをウォッチポイントにセットすると、 +i386 のようないくつかのシステムでは復旧不可能なエラーが発生することがあります。 +ユーザアドレスでのウォッチポイントがもっともうまく動作します。 + +.It Cm gdb +リモート GDB モードと DDB モードを切り替えます。 +リモート GDB モードでは、 +リモートデバッグ機能を使って +.Xr gdb 1 +を実行するためにターゲットマシンのシリアルコンソールに接続されているもう +1 台のマシンが必要となります。 +現在は +.Em i386 +アーキテクチャでのみ利用することができます。 + +.It Cm help +利用可能なコマンドとコマンドの短縮形の要約を表示します。 + +.El + +.Sh 変数 +デバッガはレジスタと変数を +.No Li \&$ Ns Em name +としてアクセスします。 +レジスタ名は +.Dq Cm show registers +コマンドで示されるものです。 +変数には変数名の頭に数字を付加したり、 +変数名の直後にコロンに続いていくつかの修飾子を指定することができます。 +たとえば、レジスタ変数は +.Li $eax:u +のように修飾子 +.Li u +をつけてユーザレジスタを表すことができます。 +.Pp +現在サポートされているビルトイン変数には次のものがあります。 +.Bl -tag -width tabstops -compact +.It Li radix +入力と出力の基数 +.It Li maxoff +offset が maxoff より大きくなければ、 +アドレスは 'symbol'+offset として表示されます。 +.It Li maxwidth +表示行の幅 +.It Li lines +行数。"more" 機能で使われます。 +.It Li tabstops +タブストップ幅。 +.It Li work Ns Ar xx +ワーク変数。 +.Ar xx +は 0 から 31 の値をとることができます。 +.El +.Sh 式 +.Sq Li \&~ +と +.Sq Li \&^ +と +単項演算子の +.Sq Li \&& +を除き、C 言語のほとんど全ての式の演算子がサポートされています。 +.Nm +での特別ルールは以下の通りです。 +.Bl -tag -width Identifiers +.It Em 識別子 +シンボルの名称はシンボルの値に翻訳されます。 +それは対応するオブジェクトのアドレスとなります。 +.Sq Li \&. +と +.Sq Li \&: +は識別子に使うことができます。 +オブジェクトフォーマット依存ルーチンによってサポートされていれば、 +.No Xo +.Op Em filename Ns Li \&: +.Em func Ns Li \&: Ns Em lineno +.Xc +と +.No Xo +.Op Em filename Ns Li \&: +.Em variable +.Xc +と +.No Xo +.Op Em filename Ns Li \&: +.Em lineno +.Xc +はシンボルとして受け入れられます。 +.It Em 数字 +基数は最初の 2 文字で決定されます。 +.Li 0x +は 16 進数, +.Li 0o +は 8 進数, +.Li 0t +は 10 進数となり、これらの他は現在の基数にしたがいます。 +.It Li \&. +`dot' +.It Li \&+ +`next' +.It Li \&.. +検査した最後の行の始めのアドレス。 +`dot' や `next' とは違い、これは +.Dq Li examine +か +.Dq Li write +コマンドでのみ変更されます。 +.It Li \&' +明示的に指定した最後のアドレス。 +.It Li \&$ Ns Em variable +指定された変数の値に翻訳されます。 +これに +.Li : +と修飾子を前述したように続けることができます。 +.It Em a Ns Li \&# Ns Em b +左側を右側の次の倍数に切り上げる 2 項演算子。 +.It Li \&* Ns Em expr +間接。 +これに +.Sq Li : +と修飾子を前述したように続けることができます。 +.El +.Sh 関連項目 +.Xr gdb 1 +.Sh 歴史 +.Nm +デバッガは Mach 用に開発され、386BSD 0.1 に移植されました。 +このマニュアルページは Garrett Wollman によって +.Fl man +マクロから書き換えられました。 |