Diff for /gnujdoc/gdb-4.18/remote-ja.texi between versions 1.1 and 1.2

version 1.1, 1999/07/17 04:54:48 version 1.2, 2001/02/07 12:13:21
Line 1 Line 1
 @c                                                              -*- Texinfo -*-  @c                                                              -*- Texinfo -*-
 @c Copyright (c) 1990 1991 1992 1993 Free Software Foundation, Inc.  @c Copyright (c) 1990 1991 1992 1993 Free Software Foundation, Inc.
 @c This file is part of the source for the GDB manual.  @c This file is part of the source for the GDB manual.
 @c This text diverted to "Remote Debugging" section in general case;  @c This text diverted to "Remote Debugging" section in general case;
 @c however, if we're doing a manual specifically for one of these, it  @c however, if we're doing a manual specifically for one of these, it
 @c belongs up front (in "Getting In and Out" chapter).  @c belongs up front (in "Getting In and Out" chapter).
   
 @ignore  @ignore
 Japanese translation by Kazuhisa Ichikawa  Japanese translation by Kazuhisa Ichikawa
 Japanese Texinfo version by IIDA, Yosiaki  Japanese Texinfo version by IIDA, Yosiaki
   
 (Please send your comments on this Japanese version to ki@home.email.ne.jp)  (Please send your comments on this Japanese version to ki@home.email.ne.jp)
 @end ignore  @end ignore
   
 @ifset REMOTESTUB  @ifset REMOTESTUB
 @node Remote Serial  @node Remote Serial
 @subsection @value{GDBN}リモート・シリアル・プロトコル  @subsection @value{GDBN}リモート・シリアル・プロトコル
   
 @cindex remote serial debugging, overview  @cindex remote serial debugging, overview
 @cindex 概要、リモート・シリアル・デバッグ処理の[がいよう、リモート・シリアル・デバッグしょりの]  @cindex 概要、リモート・シリアル・デバッグ処理の[がいよう、リモート・シリアル・デバッグしょりの]
 他のマシン上で実行中のプログラムをデバッグするには  他のマシン上で実行中のプログラムをデバッグするには
 (@dfn{ターゲット}・マシンをデバッグするには)、  (@dfn{ターゲット}・マシンをデバッグするには)、
 そのプログラムを単独で実行するために通常必要となる事前条件をすべて整える必要があります。  そのプログラムを単独で実行するために通常必要となる事前条件をすべて整える必要があります。
 例えば、  例えば、
 Cのプログラムの場合、  Cのプログラムの場合、
   
 @enumerate  @enumerate
 @item  @item
 Cの実行環境をセットアップするためのスタートアップ・ルーチンが必要です。  Cの実行環境をセットアップするためのスタートアップ・ルーチンが必要です。
 これは通常@file{crt0}のような名前を持っています。  これは通常@file{crt0}のような名前を持っています。
 スタートアップ・ルーチンは、  スタートアップ・ルーチンは、
 ハードウェアの供給元から提供されることもありますし、  ハードウェアの供給元から提供されることもありますし、
 ユーザが自分で書かなければならないこともあります。  ユーザが自分で書かなければならないこともあります。
   
 @item  @item 
 ユーザ・プログラムからのサブルーチン呼び出しをサポートするために、  ユーザ・プログラムからのサブルーチン呼び出しをサポートするために、
 入出力の管理などを行うCのサブルーチン・ライブラリが必要になるかもしれません。  入出力の管理などを行うCのサブルーチン・ライブラリが必要になるかもしれません。
   
 @item  @item
 ユーザ・プログラムを他のマシンに持っていく手段、  ユーザ・プログラムを他のマシンに持っていく手段、
 例えばダウンロード・プログラムが必要です。  例えばダウンロード・プログラムが必要です。
 これはハードウェアの供給元から提供されることが多いのですが、  これはハードウェアの供給元から提供されることが多いのですが、
 ハードウェアのドキュメントをもとにユーザが自分で作成しなければならないこともあります。  ハードウェアのドキュメントをもとにユーザが自分で作成しなければならないこともあります。
 @end enumerate  @end enumerate
   
 次に、ユーザ・プログラムがシリアル・ポートを使って、@value{GDBN}を実行中のマシン  次に、ユーザ・プログラムがシリアル・ポートを使って、@value{GDBN}を実行中のマシン
 (@dfn{ホスト}・マシン)  (@dfn{ホスト}・マシン)
 と通信できるように準備します。  と通信できるように準備します。
 一般的には、以下のような形になります。  一般的には、以下のような形になります。
   
 @table @emph  @table @emph
 @item ホスト上では:  @item ホスト上では:
 @value{GDBN}は既にこのプロトコルの使い方を理解しています。  @value{GDBN}は既にこのプロトコルの使い方を理解しています。
 他の設定がすべて終了した後、  他の設定がすべて終了した後、
 単に@samp{target remote}コマンドを使用するだけです  単に@samp{target remote}コマンドを使用するだけです
 (@pxref{Targets,,Specifying a Debugging Target})。  (@pxref{Targets,,Specifying a Debugging Target})。
   
 @item ターゲット上では:  @item ターゲット上では:
 ユーザ・プログラムに、  ユーザ・プログラムに、
 @value{GDBN}リモート・シリアル・プロトコルを実装した特別なサブルーチンを  @value{GDBN}リモート・シリアル・プロトコルを実装した特別なサブルーチンを
 いくつかリンクする必要があります。  いくつかリンクする必要があります。
 これらのサブルーチンを含むファイルは、  これらのサブルーチンを含むファイルは、
 @dfn{デバッグ・スタブ}と呼ばれます。  @dfn{デバッグ・スタブ}と呼ばれます。
   
 @ifset GDBSERVER  @ifset GDBSERVER
 特定のリモート・ターゲットでは、  特定のリモート・ターゲットでは、
 ユーザ・プログラムにスタブをリンクする代わりに、  ユーザ・プログラムにスタブをリンクする代わりに、
 @code{gdbserver}という補助プログラムを使うこともできます。  @code{gdbserver}という補助プログラムを使うこともできます。
 詳細については、  詳細については、
 @xref{Server,,Using the @code{gdbserver} program}。  @xref{Server,,Using the @code{gdbserver} program}。
 @end ifset  @end ifset
 @end table  @end table
   
 デバッグ・スタブはリモート・マシンのアーキテクチャに固有のものです。  デバッグ・スタブはリモート・マシンのアーキテクチャに固有のものです。
 例えば、  例えば、
 @sc{sparc}ボード上のプログラムをデバッグするには@file{sparc-stub.c}を使います。  @sc{sparc}ボード上のプログラムをデバッグするには@file{sparc-stub.c}を使います。
   
 @cindex remote serial stub list  @cindex remote serial stub list
 @cindex リモート・シリアル・スタブの一覧[リモート・シリアル・スタブのいちらん]  @cindex リモート・シリアル・スタブの一覧[リモート・シリアル・スタブのいちらん]
 以下に実際に使えるスタブを列挙します。  以下に実際に使えるスタブを列挙します。
 これらは、  これらは、
 @value{GDBN}とともに配布されています。  @value{GDBN}とともに配布されています。
   
 @table @code  @table @code
   
 @item i386-stub.c  @item i386-stub.c
 @kindex i386-stub.c  @kindex i386-stub.c
 @cindex Intel  @cindex Intel
 @cindex i386  @cindex i386
 Intel 386アーキテクチャ、  Intel 386アーキテクチャ、
 およびその互換アーキテクチャ用です。  およびその互換アーキテクチャ用です。
   
 @item m68k-stub.c  @item m68k-stub.c
 @kindex m68k-stub.c  @kindex m68k-stub.c
 @cindex Motorola 680x0  @cindex Motorola 680x0
 @cindex m680x0  @cindex m680x0
 Motorola 680x0アーキテクチャ用です。  Motorola 680x0アーキテクチャ用です。
   
 @item sh-stub.c  @item sh-stub.c
 @kindex sh-stub.c  @kindex sh-stub.c
 @cindex Hitachi  @cindex Hitachi
 @cindex SH  @cindex SH
 @cindex 日立[ひたち]  @cindex 日立[ひたち]
 日立SHアーキテクチャ用です。  日立SHアーキテクチャ用です。
   
 @item sparc-stub.c  @item sparc-stub.c
 @kindex sparc-stub.c  @kindex sparc-stub.c
 @cindex Sparc  @cindex Sparc
 @sc{sparc}アーキテクチャ用です。  @sc{sparc}アーキテクチャ用です。
   
 @item sparcl-stub.c  @item sparcl-stub.c
 @kindex sparcl-stub.c  @kindex sparcl-stub.c
 @cindex Fujitsu  @cindex Fujitsu
 @cindex SparcLite  @cindex SparcLite
 @cindex 富士通[ふじつう]  @cindex 富士通[ふじつう]
 富士通@sc{sparclite}アーキテクチャ用です。  富士通@sc{sparclite}アーキテクチャ用です。
   
 @end table  @end table
   
 @value{GDBN}とともに配布されるREADMEファイルには、  @value{GDBN}とともに配布されるREADMEファイルには、
 新しく追加された他のスタブのことが記されているかもしれません。  新しく追加された他のスタブのことが記されているかもしれません。
   
 @menu  @menu
 * Stub Contents::       スタブの提供する機能  * Stub Contents::       スタブの提供する機能
 * Bootstrapping::       スタブに対する必須作業  * Bootstrapping::       スタブに対する必須作業
 * Debug Session::       ここまでのまとめ  * Debug Session::       ここまでのまとめ
 * Protocol::            通信プロトコルの概略  * Protocol::            通信プロトコルの概略
 @ifset GDBSERVER  @ifset GDBSERVER
 * Server::              gdbserverプログラムの使用  * Server::              gdbserverプログラムの使用
 @end ifset  @end ifset
 @ifset GDBSERVE  @ifset GDBSERVE
 * NetWare::             gdbserve.nlmプログラムの使用  * NetWare::             gdbserve.nlmプログラムの使用
 @end ifset  @end ifset
 @end menu  @end menu
   
 @node Stub Contents  @node Stub Contents
 @subsubsection スタブの提供する機能  @subsubsection スタブの提供する機能
   
 @cindex remote serial stub  @cindex remote serial stub
 @cindex リモート・シリアル・スタブ  @cindex リモート・シリアル・スタブ
 各アーキテクチャ用のデバッグ・スタブは、  各アーキテクチャ用のデバッグ・スタブは、
 3つのサブルーチンを提供します。  3つのサブルーチンを提供します。
   
 @table @code  @table @code
 @item set_debug_traps  @item set_debug_traps
 @kindex set_debug_traps  @kindex set_debug_traps
 @cindex remote serial stub, initialization  @cindex remote serial stub, initialization
 @cindex 初期化、リモート・シリアル・スタブの[しょきか、リモート・シリアル・スタブの]  @cindex 初期化、リモート・シリアル・スタブの[しょきか、リモート・シリアル・スタブの]
 このルーチンは、  このルーチンは、
 ユーザ・プログラムが停止したときに@code{handle_exception}が実行されるよう設定します。  ユーザ・プログラムが停止したときに@code{handle_exception}が実行されるよう設定します。
 ユーザ・プログラムは、  ユーザ・プログラムは、
 その先頭付近でこのサブルーチンを明示的に呼び出さなければなりません。  その先頭付近でこのサブルーチンを明示的に呼び出さなければなりません。
   
 @item handle_exception  @item handle_exception
 @kindex handle_exception  @kindex handle_exception
 @cindex remote serial stub, main routine  @cindex remote serial stub, main routine
 @cindex リモート・シリアル・スタブ、メイン・ルーチン  @cindex リモート・シリアル・スタブ、メイン・ルーチン
 これが中心的な仕事をする部分ですが、  これが中心的な仕事をする部分ですが、
 ユーザ・プログラムはこれを明示的には呼び出しません。  ユーザ・プログラムはこれを明示的には呼び出しません。
 セットアップ・コードによって、  セットアップ・コードによって、
 トラップが発生したときに  トラップが発生したときに
 @code{handle_exception}が実行されるよう設定されます。  @code{handle_exception}が実行されるよう設定されます。
   
 ユーザ・プログラムが実行中に  ユーザ・プログラムが実行中に
 (例えば、ブレイクポイントで)  (例えば、ブレイクポイントで)
 停止すると、  停止すると、
 @code{handle_exception}が制御権を獲得し、  @code{handle_exception}が制御権を獲得し、
 ホスト・マシン上の@value{GDBN}との通信を行います。  ホスト・マシン上の@value{GDBN}との通信を行います。
 これが、  これが、
 通信プロトコルが実装されている部分です。  通信プロトコルが実装されている部分です。
 @code{handle_exception}は、  @code{handle_exception}は、
 ターゲット・マシン上で@value{GDBN}の代理として機能します。  ターゲット・マシン上で@value{GDBN}の代理として機能します。
 それはまず、  それはまず、
 ユーザ・プログラムの状態に関する情報を要約して送ることから始めます。  ユーザ・プログラムの状態に関する情報を要約して送ることから始めます。
 次に、  次に、
 @value{GDBN}が必要とする情報を入手して転送する処理を継続します。  @value{GDBN}が必要とする情報を入手して転送する処理を継続します。
 これは、  これは、
 ユーザ・プログラムの実行を再開させるような@value{GDBN}コマンドが実行されるまで続きます。  ユーザ・プログラムの実行を再開させるような@value{GDBN}コマンドが実行されるまで続きます。
 そのようなコマンドが実行されると、  そのようなコマンドが実行されると、
 @code{handle_exception}は、  @code{handle_exception}は、
 制御をターゲット・マシン上のユーザ・コードに戻します。  制御をターゲット・マシン上のユーザ・コードに戻します。
   
 @item breakpoint  @item breakpoint
 @cindex @code{breakpoint} subroutine, remote  @cindex @code{breakpoint} subroutine, remote
 @cindex @code{breakpoint}サブルーチン、リモート  @cindex @code{breakpoint}サブルーチン、リモート
 ユーザ・プログラムにブレイクポイントを持たせるには、  ユーザ・プログラムにブレイクポイントを持たせるには、
 この補助的なサブルーチンを使います。  この補助的なサブルーチンを使います。
 特定の状況においては、  特定の状況においては、
 これが@value{GDBN}が制御を獲得する唯一の方法です。  これが@value{GDBN}が制御を獲得する唯一の方法です。
 例えば、  例えば、
 ユーザのターゲット・マシンに割り込みを発生させるボタンのようなものがあれば、  ユーザのターゲット・マシンに割り込みを発生させるボタンのようなものがあれば、
 このサブルーチンを呼び出す必要はありません。  このサブルーチンを呼び出す必要はありません。
 割り込みボタンを押すことで、  割り込みボタンを押すことで、
 制御は@code{handle_exception}に、  制御は@code{handle_exception}に、
 つまり事実上@value{GDBN}に渡されます。  つまり事実上@value{GDBN}に渡されます。
 マシンによっては、  マシンによっては、
 シリアル・ポートから文字を受け取るだけでトラップが発生することもあります。  シリアル・ポートから文字を受け取るだけでトラップが発生することもあります。
 このような場合には、  このような場合には、
 ユーザ・プログラム自身から@code{breakpoint}を呼び出す必要はなく、  ユーザ・プログラム自身から@code{breakpoint}を呼び出す必要はなく、
 ホストの@value{GDBN}セッションから@samp{target remote}を実行するだけで制御を得ることができます。  ホストの@value{GDBN}セッションから@samp{target remote}を実行するだけで制御を得ることができます。
   
 これらのどのケースにも該当しない場合、  これらのどのケースにも該当しない場合、
 あるいは、  あるいは、
 デバッグ・セッションの開始箇所としてあらかじめ決めてあるところでユーザ・プログラムが停止することを  デバッグ・セッションの開始箇所としてあらかじめ決めてあるところでユーザ・プログラムが停止することを
 単に確実にしたいのであれば、  単に確実にしたいのであれば、
 @code{breakpoint}を呼び出してください。  @code{breakpoint}を呼び出してください。
 @end table  @end table
   
 @node Bootstrapping  @node Bootstrapping
 @subsubsection スタブに対する必須作業  @subsubsection スタブに対する必須作業
   
 @cindex remote stub, support routines  @cindex remote stub, support routines
 @cindex リモート・スタブ、サポート・ルーチン  @cindex リモート・スタブ、サポート・ルーチン
 @value{GDBN}とともに配布されるデバッグ用スタブは、  @value{GDBN}とともに配布されるデバッグ用スタブは、
 特定のチップのアーキテクチャ用にセットアップされたものですが、  特定のチップのアーキテクチャ用にセットアップされたものですが、
 デバッグのターゲット・マシンに関してそれ以外の情報は持っていません。  デバッグのターゲット・マシンに関してそれ以外の情報は持っていません。
   
 まず最初に、  まず最初に、
 どのようにしてシリアル・ポートと通信するかをスタブに教えてやる必要があります。  どのようにしてシリアル・ポートと通信するかをスタブに教えてやる必要があります。
   
 @table @code  @table @code
 @item int getDebugChar()  @item int getDebugChar()
 @kindex getDebugChar  @kindex getDebugChar
 シリアル・ポートから単一文字を読み込むサブルーチンとしてこれを書きます。  シリアル・ポートから単一文字を読み込むサブルーチンとしてこれを書きます。
 これは、  これは、
 ターゲット・システム上の  ターゲット・システム上の
 @code{getchar}と同一かもしれません。  @code{getchar}と同一かもしれません。
 これら2つを区別したい場合を考慮して、  これら2つを区別したい場合を考慮して、
 異なる名前が使われています。  異なる名前が使われています。
   
 @item void putDebugChar(int)  @item void putDebugChar(int)
 @kindex putDebugChar  @kindex putDebugChar
 シリアル・ポートに単一文字を書き込むサブルーチンとしてこれを書きます。  シリアル・ポートに単一文字を書き込むサブルーチンとしてこれを書きます。
 これは、  これは、
 ターゲット・システム上の  ターゲット・システム上の
 @code{putchar}と同一かもしれません。  @code{putchar}と同一かもしれません。
 これら2つを区別したい場合を考慮して、  これら2つを区別したい場合を考慮して、
 異なる名前が使われています。  異なる名前が使われています。
 @end table  @end table
   
 @cindex control C, and remote debugging  @cindex control C, and remote debugging
 @cindex interrupting remote targets  @cindex interrupting remote targets
 @cindex Ctrl-C、リモート・デバッグ処理[Ctrl-C、リモート・デバッグしょり]  @cindex Ctrl-C、リモート・デバッグ処理[Ctrl-C、リモート・デバッグしょり]
 @cindex リモート・ターゲットの割り込み[リモート・ターゲットのわりこみ]  @cindex リモート・ターゲットの割り込み[リモート・ターゲットのわりこみ]
 実行中のユーザ・プログラムを@value{GDBN}が停止できるようにしたいのであれば、  実行中のユーザ・プログラムを@value{GDBN}が停止できるようにしたいのであれば、
 割り込み駆動型のシリアル・ドライバを使用して、  割り込み駆動型のシリアル・ドライバを使用して、
 @code{^C}  @code{^C}
 (control-C文字、  (control-C文字、
 すなわち@samp{\003})  すなわち@samp{\003})
 を受信したときに停止するよう設定する必要があります。  を受信したときに停止するよう設定する必要があります。
 @value{GDBN}はこの文字を使って、  @value{GDBN}はこの文字を使って、
 リモート・システムに対して停止するよう通知します。  リモート・システムに対して停止するよう通知します。
   
 デバッグ・ターゲットが適切なステータス情報を@value{GDBN}に対して返せるようにするためには、  デバッグ・ターゲットが適切なステータス情報を@value{GDBN}に対して返せるようにするためには、
 おそらく標準のスタブを変更する必要があるでしょう。  おそらく標準のスタブを変更する必要があるでしょう。
 最も美しくなく、  最も美しくなく、
 しかし最も手っ取り早くこれを実現する方法は、  しかし最も手っ取り早くこれを実現する方法は、
 ブレイクポイント命令を実行することです  ブレイクポイント命令を実行することです
 (この方法が「美しくない」のは、  (この方法が「美しくない」のは、
 @value{GDBN}が@code{SIGINT}ではなく@code{SIGTRAP}を報告してくる点にあります)。  @value{GDBN}が@code{SIGINT}ではなく@code{SIGTRAP}を報告してくる点にあります)。
   
 ユーザが提供する必要のあるルーチンには、  ユーザが提供する必要のあるルーチンには、
 ほかに以下のようなものがあります。  ほかに以下のようなものがあります。
   
 @table @code  @table @code
 @item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})  @item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
 @kindex exceptionHandler  @kindex exceptionHandler
 例外処理テーブルに@var{exception_address}を組み込むよう、  例外処理テーブルに@var{exception_address}を組み込むよう、
 この関数を書きます。  この関数を書きます。
 ユーザがこれを提供しなければならないのは、  ユーザがこれを提供しなければならないのは、
 スタブにはターゲット・システム上の例外処理テーブルがどのようなものになるかを知る手段がないからです  スタブにはターゲット・システム上の例外処理テーブルがどのようなものになるかを知る手段がないからです
 (例えば、  (例えば、
 プロセッサのテーブルは@sc{rom}上にあり、  プロセッサのテーブルは@sc{rom}上にあり、
 その中のエントリが@sc{ram}上のテーブルを指す、  その中のエントリが@sc{ram}上のテーブルを指す、
 という形になっているかもしれません)。  という形になっているかもしれません)。
 @var{exception_number}  @var{exception_number}
 は例外番号で、  は例外番号で、
 これは変更される必要があります。  これは変更される必要があります。
 例外番号の意味は、  例外番号の意味は、
 アーキテクチャに依存します  アーキテクチャに依存します
 (例えば、  (例えば、
 0による除算、  0による除算、
 境界を無視したメモリ・アクセス等は、  境界を無視したメモリ・アクセス等は、
 異なる番号によって表わされるかもしれません)。  異なる番号によって表わされるかもしれません)。
 この例外が発生したとき、  この例外が発生したとき、
 制御は直接@var{exception_address}に渡されなければならず、  制御は直接@var{exception_address}に渡されなければならず、
 また、  また、
 プロセッサの状態  プロセッサの状態
 (スタック、レジスタなど)  (スタック、レジスタなど)
 はプロセッサ例外が発生したときの状態と同じでなければなりません。  はプロセッサ例外が発生したときの状態と同じでなければなりません。
 したがって、  したがって、
 @var{exception_address}に到達するのにジャンプ命令を使用したいのであれば、  @var{exception_address}に到達するのにジャンプ命令を使用したいのであれば、
 サブルーチン・ジャンプではなく、  サブルーチン・ジャンプではなく、
 ただのジャンプ命令を使わなければなりません。  ただのジャンプ命令を使わなければなりません。
   
 386では、  386では、
 ハンドラが実行されているときに割り込みがマスクされるよう、  ハンドラが実行されているときに割り込みがマスクされるよう、
 @var{exception_address}は割り込みゲートとして組み込まれる必要があります。  @var{exception_address}は割り込みゲートとして組み込まれる必要があります。
 そのゲートは特権レベル0  そのゲートは特権レベル0
 (最も高いレベル)  (最も高いレベル)
 でなければなりません。  でなければなりません。
 @sc{sparc}用のスタブや68k用のスタブは、  @sc{sparc}用のスタブや68k用のスタブは、
 @code{exceptionHandler}の助けを借りなくても自分で割り込みをマスクすることができます。  @code{exceptionHandler}の助けを借りなくても自分で割り込みをマスクすることができます。
   
 @item void flush_i_cache()  @item void flush_i_cache()
 @kindex flush_i_cache  @kindex flush_i_cache
 (sparc、  (sparc、
 sparcliteのみ)  sparcliteのみ)
 ターゲット・マシンに命令キャッシュがある場合、  ターゲット・マシンに命令キャッシュがある場合、
 それをフラッシュするようこのサブルーチンを書きます。  それをフラッシュするようこのサブルーチンを書きます。
 命令キャッシュがない場合には、  命令キャッシュがない場合には、
 このサブルーチンは何もしないものになるかもしれません。  このサブルーチンは何もしないものになるかもしれません。
   
 命令キャッシュを持つターゲット・マシン上の@value{GDBN}は、  命令キャッシュを持つターゲット・マシン上の@value{GDBN}は、
 ユーザ・プログラムが安定した状態にあることが  ユーザ・プログラムが安定した状態にあることが
 この関数によって保証されることを必要とします。  この関数によって保証されることを必要とします。
 @end table  @end table
   
 @noindent  @noindent
 @c {{有効にしておかなけければなりません}}  @c {{有効にしておかなけければなりません}}
 また、次のライブラリ・ルーチンが使用可能であることを確かめなければなりません。  また、次のライブラリ・ルーチンが使用可能であることを確かめなければなりません。
   
 @table @code  @table @code
 @item void *memset(void *, int, int)  @item void *memset(void *, int, int)
 @kindex memset  @kindex memset
 あるメモリ領域に既知の値を設定する標準ライブラリ関数@code{memset}です。  あるメモリ領域に既知の値を設定する標準ライブラリ関数@code{memset}です。
 フリーの@code{libc.a}を持っていれば、  フリーの@code{libc.a}を持っていれば、
 そこに@code{memset}があります。  そこに@code{memset}があります。
 フリーの@code{libc.a}がなければ、  フリーの@code{libc.a}がなければ、
 @code{memset}をハードウェアの供給元から入手するか、  @code{memset}をハードウェアの供給元から入手するか、
 自分で作成する必要があります。  自分で作成する必要があります。
 @end table  @end table
   
 @c {{原文はGNU}}  @c {{原文はGNU}}
 @sc{gnu} Cコンパイラを使っていないのであれば、  @sc{gnu} Cコンパイラを使っていないのであれば、
 他の標準ライブラリ・サブルーチンも必要になるかもしれません。  他の標準ライブラリ・サブルーチンも必要になるかもしれません。
 これは、  これは、
 スタブによっても異なりますが、  スタブによっても異なりますが、
 一般的にスタブは、  一般的にスタブは、
 @code{gcc}がインライン・コードとして生成する共通ライブラリ・サブルーチンを使用する可能性があります。  @code{gcc}がインライン・コードとして生成する共通ライブラリ・サブルーチンを使用する可能性があります。
   
 @node Debug Session  @node Debug Session
 @subsubsection ここまでのまとめ  @subsubsection ここまでのまとめ
   
 @cindex remote serial debugging summary  @cindex remote serial debugging summary
 @cindex 要約、リモート・シリアル・デバッグ処理の[ようやく、リモート・シリアル・デバッグしょりの]  @cindex 要約、リモート・シリアル・デバッグ処理の[ようやく、リモート・シリアル・デバッグしょりの]
 要約すると、  要約すると、
 ユーザ・プログラムをデバッグする準備が整った後、  ユーザ・プログラムをデバッグする準備が整った後、
 以下の手順に従わなければなりません。  以下の手順に従わなければなりません。
   
 @enumerate  @enumerate
 @item  @item
 下位レベルのサポート・ルーチンがあることを確認します  下位レベルのサポート・ルーチンがあることを確認します
 (@pxref{Bootstrapping,,What you must do for the stub})。  (@pxref{Bootstrapping,,What you must do for the stub})。
 @display  @display
 @code{getDebugChar}, @code{putDebugChar},  @code{getDebugChar}, @code{putDebugChar},
 @code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.  @code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
 @end display  @end display
   
 @item  @item
 ユーザ・プログラムの先頭付近に以下の行を挿入します。  ユーザ・プログラムの先頭付近に以下の行を挿入します。
   
 @example  @example
 set_debug_traps();  set_debug_traps();
 breakpoint();  breakpoint();
 @end example  @end example
   
 @item  @item
 680x0のスタブに限り、  680x0のスタブに限り、
 @code{exceptionHook}という変数を提供する必要があります。  @code{exceptionHook}という変数を提供する必要があります。
 通常は、  通常は、
 以下のように使います。  以下のように使います。
   
 @example  @example
 void (*exceptionHook)() = 0;  void (*exceptionHook)() = 0;
 @end example  @end example
   
 しかし、  しかし、
 @code{set_debug_traps}が呼び出される前に、  @code{set_debug_traps}が呼び出される前に、
 ユーザ・プログラム内のある関数を指すようこの変数を設定すると、  ユーザ・プログラム内のある関数を指すようこの変数を設定すると、
 トラップ  トラップ
 (例えば、  (例えば、
 バス・エラー)  バス・エラー)
 で停止した後に@value{GDBN}が処理を継続実行するときに、  で停止した後に@value{GDBN}が処理を継続実行するときに、
 その関数が呼び出されます。  その関数が呼び出されます。
 @code{exceptionHook}によって指される関数は、  @code{exceptionHook}によって指される関数は、
 1つの引数付きで呼び出されます。  1つの引数付きで呼び出されます。
 それは、  それは、
 @code{int}型の例外番号です。  @code{int}型の例外番号です。
   
 @item  @item
 ユーザ・プログラム、  ユーザ・プログラム、
 ターゲット・アーキテクチャ用の@value{GDBN}デバッグ・スタブ、  ターゲット・アーキテクチャ用の@value{GDBN}デバッグ・スタブ、
 サポート・サブルーチンをコンパイルしリンクします。  サポート・サブルーチンをコンパイルしリンクします。
   
 @item  @item
 ターゲット・マシンと@value{GDBN}ホストとの間がシリアル接続されていることを確認します。  ターゲット・マシンと@value{GDBN}ホストとの間がシリアル接続されていることを確認します。
 また、  また、
 ホスト上のシリアル・ポートの名前を調べます。  ホスト上のシリアル・ポートの名前を調べます。
   
 @item  @item
 @c The "remote" target now provides a `load' command, so we should  @c The "remote" target now provides a `load' command, so we should
 @c document that.  FIXME.  @c document that.  FIXME.
 ターゲット・マシンにユーザ・プログラムをダウンロードし  ターゲット・マシンにユーザ・プログラムをダウンロードし
 (あるいは、  (あるいは、
 製造元の提供する手段によってターゲット・マシンにユーザ・プログラムを持っていき)、  製造元の提供する手段によってターゲット・マシンにユーザ・プログラムを持っていき)、
 起動します。  起動します。
   
 @item  @item
 リモート・デバッグを開始するには、  リモート・デバッグを開始するには、
 ホスト・マシン上で@value{GDBN}を実行し、  ホスト・マシン上で@value{GDBN}を実行し、
 リモート・マシン上で実行中のプログラムを実行ファイルとして指定します。  リモート・マシン上で実行中のプログラムを実行ファイルとして指定します。
 これにより、  これにより、
 ユーザ・プログラムのシンボルとテキスト域の内容を見つける方法が@value{GDBN}に通知されます。  ユーザ・プログラムのシンボルとテキスト域の内容を見つける方法が@value{GDBN}に通知されます。
   
 @cindex serial line, @code{target remote}  @cindex serial line, @code{target remote}
 @cindex @code{target remote}、シリアル回線[@code{target remote}、シリアルかいせん]  @cindex @code{target remote}、シリアル回線[@code{target remote}、シリアルかいせん]
 次に@code{target remote}コマンドを使って通信を確立します。  次に@code{target remote}コマンドを使って通信を確立します。
 引数には、  引数には、
 シリアル回線に接続された装置名または  シリアル回線に接続された装置名または
 (通常はターゲットと接続されたシリアル回線を持つ端末サーバの)  (通常はターゲットと接続されたシリアル回線を持つ端末サーバの)
 TCPポートを指定することで、  TCPポートを指定することで、
 ターゲット・マシンとの通信方法を指定します。  ターゲット・マシンとの通信方法を指定します。
 例えば、  例えば、
 @file{/dev/ttyb}という名前の装置に接続されているシリアル回線を使うには、  @file{/dev/ttyb}という名前の装置に接続されているシリアル回線を使うには、
   
 @example  @example
 target remote /dev/ttyb  target remote /dev/ttyb
 @end example  @end example
   
 @noindent  @noindent
 とします。  とします。
   
 @cindex TCP port, @code{target remote}  @cindex TCP port, @code{target remote}
 @cindex @code{target remote}、TCPポート  @cindex @code{target remote}、TCPポート
 TCP接続を使うには、  TCP接続を使うには、
 @c {{原文は``@var{host}:port''}}  @c {{原文は``@var{host}:port''}}
 @code{@var{host}:@var{port}}という形式の引数を使用します。  @code{@var{host}:@var{port}}という形式の引数を使用します。
 例えば、  例えば、
 @code{manyfarms}という名前の端末サーバのポート2828に接続するには、  @code{manyfarms}という名前の端末サーバのポート2828に接続するには、
   
 @example  @example
 target remote manyfarms:2828  target remote manyfarms:2828
 @end example  @end example
   
 とします。  とします。
 @end enumerate  @end enumerate
   
 @noindent  @noindent
   
 ここまでくると、  ここまでくると、
 データの値の調査、  データの値の調査、
 変更、  変更、
 リモート・プログラムのステップ実行、  リモート・プログラムのステップ実行、
 継続実行に通常使用するすべてのコマンドを使用することができます。  継続実行に通常使用するすべてのコマンドを使用することができます。
   
 リモート・プログラムの実行を再開し、  リモート・プログラムの実行を再開し、
 デバッグするのをやめるには、  デバッグするのをやめるには、
 @code{detach}コマンドを使います。  @code{detach}コマンドを使います。
   
 @cindex interrupting remote programs  @cindex interrupting remote programs
 @cindex remote programs, interrupting  @cindex remote programs, interrupting
 @cindex リモート・プログラムの割り込み[リモート・プログラムのわりこみ]  @cindex リモート・プログラムの割り込み[リモート・プログラムのわりこみ]
 @cindex 割り込み、リモート・プログラムの[わりこみ、リモート・プログラムの]  @cindex 割り込み、リモート・プログラムの[わりこみ、リモート・プログラムの]
 @value{GDBN}がリモート・プログラムを待っているときにはいつでも、  @value{GDBN}がリモート・プログラムを待っているときにはいつでも、
 割り込み文字  割り込み文字
 (多くの場合  (多くの場合
 @key{C-C})  @key{C-C})
 を入力すると、  を入力すると、
 @value{GDBN}はそのプログラムを停止しようとします。  @value{GDBN}はそのプログラムを停止しようとします。
 これは成功することも失敗することもありますが、  これは成功することも失敗することもありますが、
 その成否は、  その成否は、
 リモート・システムのハードウェアやシリアル・ドライバにも依存します。  リモート・システムのハードウェアやシリアル・ドライバにも依存します。
 割り込み文字を再度入力すると、  割り込み文字を再度入力すると、
 @value{GDBN}は以下のプロンプトを表示します。  @value{GDBN}は以下のプロンプトを表示します。
   
 @example  @example
 Interrupted while waiting for the program.  Interrupted while waiting for the program.
 Give up (and stop debugging it)?  (y or n)  Give up (and stop debugging it)?  (y or n)
 @end example  @end example
   
 ここで@kbd{y}を入力すると、  ここで@kbd{y}を入力すると、
 @value{GDBN}はリモート・デバッグ・セッションを破棄します  @value{GDBN}はリモート・デバッグ・セッションを破棄します
 (後になって再実行したくなった場合には、  (後になって再実行したくなった場合には、
 接続するために@samp{target remote}を再度使用します)。  接続するために@samp{target remote}を再度使用します)。
 @kbd{n}を入力すると、  @kbd{n}を入力すると、
 @value{GDBN}は再び待ち状態になります。  @value{GDBN}は再び待ち状態になります。
   
 @node Protocol  @node Protocol
 @subsubsection 通信プロトコル  @subsubsection 通信プロトコル
   
 @cindex debugging stub, example  @cindex debugging stub, example
 @cindex remote stub, example  @cindex remote stub, example
 @cindex stub example, remote debugging  @cindex stub example, remote debugging
 @cindex 実例、スタブのデバッグの[じつれい、スタブのデバッグの]  @cindex 実例、スタブのデバッグの[じつれい、スタブのデバッグの]
 @cindex 実例、リモート・スタブの[じつれい、リモート・スタブの]  @cindex 実例、リモート・スタブの[じつれい、リモート・スタブの]
 @cindex リモート・デバッグ処理、スタブの実例[リモート・デバッグしょり、スタブのじつれい]  @cindex リモート・デバッグ処理、スタブの実例[リモート・デバッグしょり、スタブのじつれい]
 @value{GDBN}とともに提供されるスタブ・ファイルは、  @value{GDBN}とともに提供されるスタブ・ファイルは、
 ターゲット側の通信プロトコルを実装します。  ターゲット側の通信プロトコルを実装します。
 そして@value{GDBN}側の通信プロトコルは、  そして@value{GDBN}側の通信プロトコルは、
 @value{GDBN}のソース・ファイル@file{remote.c}に実装されています。  @value{GDBN}のソース・ファイル@file{remote.c}に実装されています。
 通常は、  通常は、
 これらのサブルーチンに通信処理を任せて、  これらのサブルーチンに通信処理を任せて、
 詳細を無視することができます  詳細を無視することができます
 (独自のスタブ・ファイルを作成するときでも、  (独自のスタブ・ファイルを作成するときでも、
 詳細については無視して、  詳細については無視して、
 既存のスタブ・ファイルをもとにして作成を始めることができます。  既存のスタブ・ファイルをもとにして作成を始めることができます。
 @file{sparc-stub.c}が最もよく整理されており、  @file{sparc-stub.c}が最もよく整理されており、
 したがって最も読みやすくなっています)。  したがって最も読みやすくなっています)。
   
 しかし、  しかし、
 場合によっては、  場合によっては、
 プロトコルについて何かを知る必要が出てくることもあるでしょう。  プロトコルについて何かを知る必要が出てくることもあるでしょう。
 例えば、  例えば、
 ターゲット・マシンにシリアル・ポートが1つしかなく、  ターゲット・マシンにシリアル・ポートが1つしかなく、
 @value{GDBN}に対して送られてきたパケットを検出したときに、  @value{GDBN}に対して送られてきたパケットを検出したときに、
 ユーザ・プログラムが何か特別なことをするようにしたい場合です。  ユーザ・プログラムが何か特別なことをするようにしたい場合です。
   
 @cindex protocol, @value{GDBN} remote serial  @cindex protocol, @value{GDBN} remote serial
 @cindex serial protocol, @value{GDBN} remote  @cindex serial protocol, @value{GDBN} remote
 @cindex remote serial protocol  @cindex remote serial protocol
 @cindex プロトコル、@value{GDBN}リモート・シリアル  @cindex プロトコル、@value{GDBN}リモート・シリアル
 @cindex シリアル・プロトコル、@value{GDBN}リモート  @cindex シリアル・プロトコル、@value{GDBN}リモート
 @cindex リモート・シリアル・プロトコル  @cindex リモート・シリアル・プロトコル
 (単一文字による確認メッセージを除く)  (単一文字による確認メッセージを除く)
 すべての@value{GDBN}コマンドとそれに対する応答は、  すべての@value{GDBN}コマンドとそれに対する応答は、
 チェックサムを含むパケットとして送信されます。  チェックサムを含むパケットとして送信されます。
 パケットは、  パケットは、
 文字@samp{$}で始まり、  文字@samp{$}で始まり、
 文字@samp{#}に2桁のチェックサム値が続いて終わります。  文字@samp{#}に2桁のチェックサム値が続いて終わります。
   
 @example  @example
 $@var{packet info}#@var{checksum}  $@var{packet info}#@var{checksum}
 @end example  @end example
   
 @cindex checksum, for @value{GDBN} remote  @cindex checksum, for @value{GDBN} remote
 @cindex チェックサム、@value{GDBN}リモートの  @cindex チェックサム、@value{GDBN}リモートの
 @noindent  @noindent
 ここで、  ここで、
 @var{checksum}は@var{packet info}のすべての文字の値を合計したものを256で割った余りとして計算されます。  @var{checksum}は@var{packet info}のすべての文字の値を合計したものを256で割った余りとして計算されます。
   
 ホスト・マシンまたはターゲット・マシンがパケットを受信したとき、  ホスト・マシンまたはターゲット・マシンがパケットを受信したとき、
 最初に期待される応答は確認メッセージです。  最初に期待される応答は確認メッセージです。
 これは単一文字で、  これは単一文字で、
 (パッケージが正しく受信されたことを示す)  (パッケージが正しく受信されたことを示す)
 @samp{+}または  @samp{+}または
 (再送要求を示す)  (再送要求を示す)
 @samp{-}です。  @samp{-}です。
   
 ホスト  ホスト
 (@value{GDBN})  (@value{GDBN})
 がコマンドを送信し、  がコマンドを送信し、
 ターゲット  ターゲット
 (ユーザ・プログラムに組み込まれたデバッグ・スタブ)  (ユーザ・プログラムに組み込まれたデバッグ・スタブ)
 が応答としてデータを送信します。  が応答としてデータを送信します。
 ターゲットは、ユーザ・プログラムが停止したときにも、  ターゲットは、ユーザ・プログラムが停止したときにも、
 データを送信します。  データを送信します。
   
 コマンド・パケットは最初の文字で区別されます。  コマンド・パケットは最初の文字で区別されます。
 最初の文字がコマンドの種類を表わします。  最初の文字がコマンドの種類を表わします。
   
 以下に、  以下に、
 現在サポートされているコマンドをいくつか列挙します  現在サポートされているコマンドをいくつか列挙します
 @c {{原文は「@file{gdb/remote.c.}」}}  @c {{原文は「@file{gdb/remote.c.}」}}
 (コマンドの完全なリストについては@file{gdb/remote.c}を参照してください)。  (コマンドの完全なリストについては@file{gdb/remote.c}を参照してください)。
   
 @table @code  @table @code
 @item g  @item g
 CPUレジスタの値を要求します。  CPUレジスタの値を要求します。
   
 @item G  @item G
 CPUレジスタの値を設定します。  CPUレジスタの値を設定します。
   
 @item m@var{addr},@var{count}  @item m@var{addr},@var{count}
 @var{addr}で示される位置から@var{count}で示されるバイト数を読み込みます。  @var{addr}で示される位置から@var{count}で示されるバイト数を読み込みます。
   
 @item M@var{addr},@var{count}:@dots{}  @item M@var{addr},@var{count}:@dots{}
 @var{addr}で示される位置から@var{count}で示されるバイト数を書き込みます。  @var{addr}で示される位置から@var{count}で示されるバイト数を書き込みます。
   
 @need 500  @need 500
 @item c  @item c
 @itemx c@var{addr}  @itemx c@var{addr}
 カレントなアドレス  カレントなアドレス
 (@var{addr}が指定されているのであれば、  (@var{addr}が指定されているのであれば、
 それによって指定されるアドレスから)  それによって指定されるアドレスから)
 実行を再開します。  実行を再開します。
   
 @need 500  @need 500
 @item s  @item s
 @itemx s@var{addr}  @itemx s@var{addr}
 プログラム・カウンタの指すカレントな箇所から  プログラム・カウンタの指すカレントな箇所から
 (@var{addr}が指定されているのであれば、  (@var{addr}が指定されているのであれば、
 それによって指定されるアドレスから)  それによって指定されるアドレスから)
 ターゲット・プログラムを1命令だけステップ実行します。  ターゲット・プログラムを1命令だけステップ実行します。
   
 @item k  @item k
 ターゲット・プログラムを終了させます。  ターゲット・プログラムを終了させます。
   
 @item ?  @item ?
 最後に受信したシグナルを報告します。  最後に受信したシグナルを報告します。
 @value{GDBN}のシグナル処理コマンドを利用できるように、  @value{GDBN}のシグナル処理コマンドを利用できるように、
 デバッグ・スタブの中のある関数が、  デバッグ・スタブの中のある関数が、
 CPUトラップを対応するPOSIXシグナル値として報告してきます。  CPUトラップを対応するPOSIXシグナル値として報告してきます。
   
 @item T  @item T
 リモートのスタブに対して、  リモートのスタブに対して、
 @value{GDBN}がシングル・ステップ処理や条件付きブレイクポイントに関する迅速な決定を下すのに必要となる  @value{GDBN}がシングル・ステップ処理や条件付きブレイクポイントに関する迅速な決定を下すのに必要となる
 レジスタの情報だけを送信するようにさせます。  レジスタの情報だけを送信するようにさせます。
 これによって、  これによって、
 ステップ実行中の1命令ごとにすべてのレジスタの情報を入手する必要がなくなります。  ステップ実行中の1命令ごとにすべてのレジスタの情報を入手する必要がなくなります。
   
 現在の@value{GDBN}は、  現在の@value{GDBN}は、
 レジスタへのライト・スルー・キャッシュを実装していて、  レジスタへのライト・スルー・キャッシュを実装していて、
 ターゲットが実行された場合のみ、  ターゲットが実行された場合のみ、
 レジスタを再度読み込みます。  レジスタを再度読み込みます。
 @end table  @end table
   
 @kindex set remotedebug  @kindex set remotedebug
 @kindex show remotedebug  @kindex show remotedebug
 @cindex packets, reporting on stdout  @cindex packets, reporting on stdout
 @cindex serial connections, debugging  @cindex serial connections, debugging
 @cindex パケット、標準出力への報告[パケット、ひょうじゅんしゅつりょくへのほうこく]  @cindex パケット、標準出力への報告[パケット、ひょうじゅんしゅつりょくへのほうこく]
 @cindex シリアル接続、デバッグ処理[シリアルせつぞく、デバッグしょり]  @cindex シリアル接続、デバッグ処理[シリアルせつぞく、デバッグしょり]
 シリアル接続に問題がある場合には、  シリアル接続に問題がある場合には、
 @code{set remotedebug}コマンドを使うことができます。  @code{set remotedebug}コマンドを使うことができます。
 これにより@value{GDBN}は、  これにより@value{GDBN}は、
 シリアル回線経由でリモート・マシンとの間で送受信したすべてのパケットを報告するようになります。  シリアル回線経由でリモート・マシンとの間で送受信したすべてのパケットを報告するようになります。
 パケット・デバッグ用の情報は@value{GDBN}の標準出力ストリームに表示されます。  パケット・デバッグ用の情報は@value{GDBN}の標準出力ストリームに表示されます。
 @code{set remotedebug off}によってこの設定が解除され、  @code{set remotedebug off}によってこの設定が解除され、
 @code{show remotedebug}によって現在の設定が表示されます。  @code{show remotedebug}によって現在の設定が表示されます。
   
 @ifset GDBSERVER  @ifset GDBSERVER
 @node Server  @node Server
 @subsubsection @code{gdbserver}プログラムの使用  @subsubsection @code{gdbserver}プログラムの使用
   
 @kindex gdbserver  @kindex gdbserver
 @cindex remote connection without stubs  @cindex remote connection without stubs
 @cindex スタブを使わないリモート接続[スタブをつかわないリモートせつぞく]  @cindex スタブを使わないリモート接続[スタブをつかわないリモートせつぞく]
 @code{gdbserver}は、  @code{gdbserver}は、
 UNIX系システム用の制御プログラムで、  UNIX系システム用の制御プログラムで、
 これにより、  これにより、
 通常のデバッグ用スタブをリンクすることなく、  通常のデバッグ用スタブをリンクすることなく、
 @code{target remote}コマンドによって、  @code{target remote}コマンドによって、
 ユーザ・プログラムをリモートの@value{GDBN}に接続することができます。  ユーザ・プログラムをリモートの@value{GDBN}に接続することができます。
   
 @code{gdbserver}は、  @code{gdbserver}は、
 デバッグ用スタブに完全に取って代わるものではありません。  デバッグ用スタブに完全に取って代わるものではありません。
 @code{gdbserver}は、  @code{gdbserver}は、
 @value{GDBN}が必要とするのと同様のオペレーティング・システムの機能を基本的には必要とするからです。  @value{GDBN}が必要とするのと同様のオペレーティング・システムの機能を基本的には必要とするからです。
 @c {{ここは意味的に逆かも。}}  @c {{ここは意味的に逆かも。}}
 実際、  実際、
 リモートの@value{GDBN}と接続するために@code{gdbserver}を実行できるシステムであれば、  リモートの@value{GDBN}と接続するために@code{gdbserver}を実行できるシステムであれば、
 @value{GDBN}をローカルに実行することも可能です。  @value{GDBN}をローカルに実行することも可能です。
 @c @code{gdbserver} to connect to a remote @value{GDBN} could also run  @c @code{gdbserver} to connect to a remote @value{GDBN} could also run
 @c @value{GDBN} locally!  @code{gdbserver} is sometimes useful nevertheless,  @c @value{GDBN} locally!  @code{gdbserver} is sometimes useful nevertheless,
 それでも、  それでも、
 @code{gdbserver}は@value{GDBN}と比較するとかなりサイズが小さいので、  @code{gdbserver}は@value{GDBN}と比較するとかなりサイズが小さいので、
 便利なことがあります。  便利なことがあります。
 また、  また、
 @code{gdbserver}の移植は@value{GDBN}全体の移植よりも簡単なので、  @code{gdbserver}の移植は@value{GDBN}全体の移植よりも簡単なので、
 @code{gdbserver}を使うことで、  @code{gdbserver}を使うことで、
 新しいシステムでの作業をより早く開始することができます、  新しいシステムでの作業をより早く開始することができます、
 最後に、  最後に、
 リアル・タイム・システムの開発をしている場合、  リアル・タイム・システムの開発をしている場合、
 リアル・タイムな操作に関わるトレードオフのために、  リアル・タイムな操作に関わるトレードオフのために、
 例えばクロス・コンパイルなどによって、  例えばクロス・コンパイルなどによって、
 他のシステム上で可能な限り多くの開発作業を行ったほうが便利であるということがあるでしょう。  他のシステム上で可能な限り多くの開発作業を行ったほうが便利であるということがあるでしょう。
 デバッグ作業に関しても、  デバッグ作業に関しても、
 @code{gdbserver}を使うことでこれと同じような選択を行うことができます。  @code{gdbserver}を使うことでこれと同じような選択を行うことができます。
   
 @value{GDBN}と@code{gdbserver}は、  @value{GDBN}と@code{gdbserver}は、
 シリアル回線またはTCP接続を経由して、  シリアル回線またはTCP接続を経由して、
 標準的な@value{GDBN}リモート・シリアル・プロトコルによって通信します。  標準的な@value{GDBN}リモート・シリアル・プロトコルによって通信します。
   
 @table @emph  @table @emph
 @item ターゲット・マシンでは:  @item ターゲット・マシンでは:
 デバッグしたいプログラムのコピーが1つ必要です。  デバッグしたいプログラムのコピーが1つ必要です。
 @code{gdbserver}はユーザ・プログラムのシンボル・テーブルを必要とはしませんので、  @code{gdbserver}はユーザ・プログラムのシンボル・テーブルを必要とはしませんので、
 スペースの節約が必要であれば、  スペースの節約が必要であれば、
 プログラムをストリップすることができます。  プログラムをストリップすることができます。
 ホスト・システム上の@value{GDBN}が、  ホスト・システム上の@value{GDBN}が、
 シンボルに関するすべての処理を実行します。  シンボルに関するすべての処理を実行します。
   
 @code{gdbserver}を使うには、  @code{gdbserver}を使うには、
 @value{GDBN}との通信方法、  @value{GDBN}との通信方法、
 ユーザ・プログラムの名前、  ユーザ・プログラムの名前、
 ユーザ・プログラムへの引数を教えてやる必要があります。  ユーザ・プログラムへの引数を教えてやる必要があります。
 構文は、  構文は、
 以下のとおりです。  以下のとおりです。
   
 @smallexample  @smallexample
 target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]  target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
 @end smallexample  @end smallexample
   
 @var{comm}は  @var{comm}は
 (シリアル回線を使うための)  (シリアル回線を使うための)
 装置名、  装置名、
 あるいは、  あるいは、
 TCPのホスト名とポート番号です。  TCPのホスト名とポート番号です。
 例えば、  例えば、
 @samp{foo.txt}という引数を指定してEmacsをデバッグし、  @samp{foo.txt}という引数を指定してEmacsをデバッグし、
 シリアル・ポート@file{/dev/com1}経由で@value{GDBN}と通信するには、  シリアル・ポート@file{/dev/com1}経由で@value{GDBN}と通信するには、
 以下のように実行します。  以下のように実行します。
   
 @smallexample  @smallexample
 target> gdbserver /dev/com1 emacs foo.txt  target> gdbserver /dev/com1 emacs foo.txt
 @end smallexample  @end smallexample
   
 @code{gdbserver}は、  @code{gdbserver}は、
 ホスト側の@value{GDBN}が通信してくるのを受動的に待ちます。  ホスト側の@value{GDBN}が通信してくるのを受動的に待ちます。
   
 シリアル回線の代わりにTCP接続を使うには、  シリアル回線の代わりにTCP接続を使うには、
 以下のようにします。  以下のようにします。
   
 @smallexample  @smallexample
 target> gdbserver host:2345 emacs foo.txt  target> gdbserver host:2345 emacs foo.txt
 @end smallexample  @end smallexample
   
 前の例との唯一の違いは第1引数です。  前の例との唯一の違いは第1引数です。
 これは、  これは、
 ホストの@value{GDBN}とTCPによって接続することを指定しています。  ホストの@value{GDBN}とTCPによって接続することを指定しています。
 @samp{host:2345}は、  @samp{host:2345}は、
 マシン@samp{host}からローカルのTCPポート2345へのTCP接続を@code{gdbserver}が期待していることを意味します  マシン@samp{host}からローカルのTCPポート2345へのTCP接続を@code{gdbserver}が期待していることを意味します
 (現在のバージョンでは、  (現在のバージョンでは、
 @samp{host}の部分は無視されます)。  @samp{host}の部分は無視されます)。
 ターゲット・システム上で既に使われているTCPポートでなければ、  ターゲット・システム上で既に使われているTCPポートでなければ、
 任意の番号をポート番号として選択できます  任意の番号をポート番号として選択できます
 (例えば、  (例えば、
 @code{23}は@code{telnet}に予約されています)  @code{23}は@code{telnet}に予約されています)
 @footnote{原注:他のサービスによって使用されているポート番号を選択すると、  @footnote{原注:他のサービスによって使用されているポート番号を選択すると、
 @code{gdbserver}はエラー・メッセージを出力して終了します。}。  @code{gdbserver}はエラー・メッセージを出力して終了します。}。
 ここで指定したのと同じポート番号を、  ここで指定したのと同じポート番号を、
 ホスト上の@value{GDBN}の@code{target remote}コマンドで使わなければなりません。  ホスト上の@value{GDBN}の@code{target remote}コマンドで使わなければなりません。
   
 @item @value{GDBN}のホスト・マシンでは:  @item @value{GDBN}のホスト・マシンでは:
 @value{GDBN}はシンボル情報、  @value{GDBN}はシンボル情報、
 デバッグ情報を必要とするので、  デバッグ情報を必要とするので、
 ストリップされていないユーザ・プログラムのコピーが必要です。  ストリップされていないユーザ・プログラムのコピーが必要です。
 通常どおり、  通常どおり、
 第1引数にユーザ・プログラムのローカル・コピーの名前を指定して@value{GDBN}を起動します  第1引数にユーザ・プログラムのローカル・コピーの名前を指定して@value{GDBN}を起動します
 (シリアル回線の速度が9600 bps以外であれば、  (シリアル回線の速度が9600 bps以外であれば、
 @w{@samp{--baud}}オプションも必要になります)。  @w{@samp{--baud}}オプションも必要になります)。
 その後、  その後、
 @code{target remote}コマンドによって@code{gdbserver}との通信を確立します。  @code{target remote}コマンドによって@code{gdbserver}との通信を確立します。
 引数には、  引数には、
 装置名  装置名
 (通常は@file{/dev/ttyb}のようなシリアル装置)、  (通常は@file{/dev/ttyb}のようなシリアル装置)、
 または、  または、
 @code{@var{host}:@var{PORT}}という形式でのTCPポート記述子を指定します。  @code{@var{host}:@var{PORT}}という形式でのTCPポート記述子を指定します。
 例えば、  例えば、
   
 @smallexample  @smallexample
 (@value{GDBP}) target remote /dev/ttyb  (@value{GDBP}) target remote /dev/ttyb
 @end smallexample  @end smallexample
   
 @noindent  @noindent
 では、  では、
 シリアル回線@file{/dev/ttyb}を介して@code{gdbserver}と通信します。  シリアル回線@file{/dev/ttyb}を介して@code{gdbserver}と通信します。
 また、  また、
   
 @smallexample  @smallexample
 (@value{GDBP}) target remote the-target:2345  (@value{GDBP}) target remote the-target:2345
 @end smallexample  @end smallexample
   
 @noindent  @noindent
 では、  では、
 ホスト@w{@file{the-target}}上のポート2345に対するTCP接続によって通信します。  ホスト@w{@file{the-target}}上のポート2345に対するTCP接続によって通信します。
 TCP接続を使う場合には、  TCP接続を使う場合には、
 @code{target remote}コマンドを実行する前に、  @code{target remote}コマンドを実行する前に、
 @code{gdbserver}を起動しておかなければなりません。  @code{gdbserver}を起動しておかなければなりません。
 そうしないと、エラーになります。  そうしないと、エラーになります。
 エラー・テキストの内容はホスト・システムによって異なりますが、  エラー・テキストの内容はホスト・システムによって異なりますが、
 通常は@samp{Connection refused}のような内容です。  通常は@samp{Connection refused}のような内容です。
 @end table  @end table
 @end ifset  @end ifset
   
 @ifset GDBSERVE  @ifset GDBSERVE
 @node NetWare  @node NetWare
 @subsubsection @code{gdbserve.nlm}プログラムの使用  @subsubsection @code{gdbserve.nlm}プログラムの使用
   
 @kindex gdbserve.nlm  @kindex gdbserve.nlm
 @code{gdbserve.nlm}はNetWareシステムでの制御プログラムです。  @code{gdbserve.nlm}はNetWareシステムでの制御プログラムです。
 これによって、  これによって、
 @code{target remote}コマンドでユーザ・プログラムをリモートの@value{GDBN}に接続することができます。  @code{target remote}コマンドでユーザ・プログラムをリモートの@value{GDBN}に接続することができます。
   
 @value{GDBN}と@code{gdbserve.nlm}は、  @value{GDBN}と@code{gdbserve.nlm}は、
 標準の@value{GDBN}リモート・シリアル・プロトコルを使って、  標準の@value{GDBN}リモート・シリアル・プロトコルを使って、
 シリアル回線経由で通信します。  シリアル回線経由で通信します。
   
 @table @emph  @table @emph
 @item ターゲット・マシンでは:  @item ターゲット・マシンでは:
 デバッグしたいプログラムのコピーが1つ必要です。  デバッグしたいプログラムのコピーが1つ必要です。
 @code{gdbserve.nlm}はユーザ・プログラムのシンボル・テーブルを必要とはしませんので、  @code{gdbserve.nlm}はユーザ・プログラムのシンボル・テーブルを必要とはしませんので、
 スペースの節約が必要であれば、  スペースの節約が必要であれば、
 プログラムをストリップすることができます。  プログラムをストリップすることができます。
 ホスト・システム上の@value{GDBN}が、  ホスト・システム上の@value{GDBN}が、
 シンボルに関わるすべての処理を実行します。  シンボルに関わるすべての処理を実行します。
   
 @code{gdbserve.nlm}を使うには、  @code{gdbserve.nlm}を使うには、
 @value{GDBN}との通信方法、  @value{GDBN}との通信方法、
 ユーザ・プログラムの名前、  ユーザ・プログラムの名前、
 ユーザ・プログラムの引数を教えてやる必要があります。  ユーザ・プログラムの引数を教えてやる必要があります。
 構文は、  構文は、
 以下のとおりです。  以下のとおりです。
   
 @smallexample  @smallexample 
 load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]  load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
               [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]                [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
 @end smallexample  @end smallexample
   
 @var{board}と@var{port}がシリアル回線を指定します。  @var{board}と@var{port}がシリアル回線を指定します。
 @var{baud}は接続に使われるボーレートを指定します。  @var{baud}は接続に使われるボーレートを指定します。
 @var{port}と@var{node}のデフォルト値は0、  @var{port}と@var{node}のデフォルト値は0、
 @var{baud}のデフォルト値は9600 bpsです。  @var{baud}のデフォルト値は9600 bpsです。
   
 例えば、  例えば、
 @samp{foo.txt}という引数を指定してEmacsをデバッグし、  @samp{foo.txt}という引数を指定してEmacsをデバッグし、
 シリアル・ポート番号2、  シリアル・ポート番号2、
 ボード1を経由して19200 bpsの接続で@value{GDBN}と通信するには、  ボード1を経由して19200 bpsの接続で@value{GDBN}と通信するには、
 以下のように実行します。  以下のように実行します。
   
 @smallexample  @smallexample
 load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt  load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
 @end smallexample  @end smallexample
   
 @item @value{GDBN}のホスト・マシンでは:  @item @value{GDBN}のホスト・マシンでは:
 @value{GDBN}はシンボル情報、  @value{GDBN}はシンボル情報、
 デバッグ情報を必要とするので、  デバッグ情報を必要とするので、
 ストリップされていないユーザ・プログラムのコピーが必要です。  ストリップされていないユーザ・プログラムのコピーが必要です。
 通常どおり、  通常どおり、
 第1引数にユーザ・プログラムのローカル・コピーの名前を指定して@value{GDBN}を起動します  第1引数にユーザ・プログラムのローカル・コピーの名前を指定して@value{GDBN}を起動します
 (シリアル回線の速度が9600 bps以外であれば、  (シリアル回線の速度が9600 bps以外であれば、
 @w{@samp{--baud}}オプションも必要になります)。  @w{@samp{--baud}}オプションも必要になります)。
 その後、  その後、
 @code{target remote}コマンドによって  @code{target remote}コマンドによって
 @code{gdbserve.nlm}との通信を確立します。  @code{gdbserve.nlm}との通信を確立します。
 引数には、  引数には、
 装置名  装置名
 (通常は@file{/dev/ttyb}のようなシリアル装置)  (通常は@file{/dev/ttyb}のようなシリアル装置)
 を指定します。  を指定します。
 例えば、  例えば、
   
 @smallexample  @smallexample
 (@value{GDBP}) target remote /dev/ttyb  (@value{GDBP}) target remote /dev/ttyb
 @end smallexample  @end smallexample
   
 @noindent  @noindent
 は、  は、
 シリアル回線@file{/dev/ttyb}を経由して@code{gdbserve.nlm}と通信します。  シリアル回線@file{/dev/ttyb}を経由して@code{gdbserve.nlm}と通信します。
 @end table  @end table
 @end ifset  @end ifset
   
 @end ifset  @end ifset
   
 @ifset I960  @ifset I960
 @node i960-Nindy Remote  @node i960-Nindy Remote
 @subsection @value{GDBN}とリモートi960(Nindy)  @subsection @value{GDBN}とリモートi960(Nindy)
   
 @cindex Nindy  @cindex Nindy
 @cindex i960  @cindex i960
 @dfn{Nindy}は、  @dfn{Nindy}は、
 Intel 960ターゲット・システム用のROM Monitorプログラムです。  Intel 960ターゲット・システム用のROM Monitorプログラムです。
 Nindyを使ってリモートのIntel 960を制御するよう@value{GDBN}が構成されている場合、  Nindyを使ってリモートのIntel 960を制御するよう@value{GDBN}が構成されている場合、
 いくつかの方法によって@value{GDBN}に960との接続方法を教えることができます。  いくつかの方法によって@value{GDBN}に960との接続方法を教えることができます。
   
 @itemize @bullet  @itemize @bullet
 @item  @item
 シリアル・ポート、  シリアル・ポート、
 Nindyプロトコルのバージョン、  Nindyプロトコルのバージョン、
 通信スピードを指定するコマンドライン・オプションによる方法  通信スピードを指定するコマンドライン・オプションによる方法
   
 @item  @item
 起動時のプロンプトに答える方法  起動時のプロンプトに答える方法
   
 @item  @item
 @value{GDBN}セッション中の任意の時点で@code{target}コマンドを使う方法  @value{GDBN}セッション中の任意の時点で@code{target}コマンドを使う方法
 (@xref{Target Commands, ,Commands for managing targets})  (@xref{Target Commands, ,Commands for managing targets})
   
 @end itemize  @end itemize
   
 @menu  @menu
 * Nindy Startup::               Nindy使用時の起動方法  * Nindy Startup::               Nindy使用時の起動方法
 * Nindy Options::               Nindy用のオプション  * Nindy Options::               Nindy用のオプション
 * Nindy Reset::                 Nindy resetコマンド  * Nindy Reset::                 Nindy resetコマンド
 @end menu  @end menu
   
 @node Nindy Startup  @node Nindy Startup
 @subsubsection Nindy使用時の起動方法  @subsubsection Nindy使用時の起動方法
   
 コマンドライン・オプションを一切使わずに@code{@value{GDBP}}を起動すると、  コマンドライン・オプションを一切使わずに@code{@value{GDBP}}を起動すると、
 通常の@value{GDBN}プロンプトが表示される@emph{前}に、  通常の@value{GDBN}プロンプトが表示される@emph{前}に、
 使用するシリアル・ポートを指定するよう促されます。  使用するシリアル・ポートを指定するよう促されます。
   
 @example  @example
 Attach /dev/ttyNN -- specify NN, or "quit" to quit:    Attach /dev/ttyNN -- specify NN, or "quit" to quit:  
 @end example  @end example
   
 @noindent  @noindent
 このプロンプトに対して、  このプロンプトに対して、
 使いたいシリアル・ポートを示す  使いたいシリアル・ポートを示す
 (@samp{/dev/tty}の後ろの)  (@samp{/dev/tty}の後ろの)
 サフィックスを入力します。  サフィックスを入力します。
 もしそうしたいのであれば、  もしそうしたいのであれば、
 プロンプトに空行で答えることによって、  プロンプトに空行で答えることによって、
 Nindyとの接続を確立せずに起動することもできます。  Nindyとの接続を確立せずに起動することもできます。
 この場合、  この場合、
 後にNindyと接続したいときには@code{target}コマンドを使います  後にNindyと接続したいときには@code{target}コマンドを使います
 (@pxref{Target Commands, ,Commands for managing targets})。  (@pxref{Target Commands, ,Commands for managing targets})。
   
 @node Nindy Options  @node Nindy Options
 @subsubsection Nindy用のオプション  @subsubsection Nindy用のオプション
   
 接続されたNindy-960ボードとの@value{GDBN}セッションを開始するための  接続されたNindy-960ボードとの@value{GDBN}セッションを開始するための
 起動オプションを以下に示します。  起動オプションを以下に示します。
   
 @table @code  @table @code
 @item -r @var{port}  @item -r @var{port}
 ターゲット・システムとの接続に使用されるシリアル・インターフェイスのシリアル・ポート名を指定します。  ターゲット・システムとの接続に使用されるシリアル・インターフェイスのシリアル・ポート名を指定します。
 このオプションは、  このオプションは、
 @value{GDBN}がIntel 960ターゲット・アーキテクチャ用に構成されているときのみ利用可能です。  @value{GDBN}がIntel 960ターゲット・アーキテクチャ用に構成されているときのみ利用可能です。
 @var{port}は、  @var{port}は、
 @c {{pathを補った}}  @c {{pathを補った}}
 完全なパス名  完全なパス名
 (例:@samp{-r /dev/ttya})、  (例:@samp{-r /dev/ttya})、
 @file{/dev}配下のデバイス名  @file{/dev}配下のデバイス名
 (例:@samp{-r ttya})、  (例:@samp{-r ttya})、
 @code{tty}固有の一意なサフィックス  @code{tty}固有の一意なサフィックス
 (例:@samp{-r a})  (例:@samp{-r a})
 のいずれによっても指定することができます。  のいずれによっても指定することができます。
   
 @item -O  @item -O
 (ゼロではなく、  (ゼロではなく、
 英大文字のOです)。  英大文字のOです)。
 @value{GDBN}がターゲット・システムと接続する際に、  @value{GDBN}がターゲット・システムと接続する際に、
 古いNindyモニタ・プロトコルを使用すべきであることを指定します。  古いNindyモニタ・プロトコルを使用すべきであることを指定します。
 このオプションは、  このオプションは、
 @value{GDBN}がIntel 960ターゲット・アーキテクチャ用に構成されているときのみ利用可能です。  @value{GDBN}がIntel 960ターゲット・アーキテクチャ用に構成されているときのみ利用可能です。
   
 @quotation  @quotation
 @emph{注意}:@samp{-O}を指定したにもかかわらず、  @emph{注意}:@samp{-O}を指定したにもかかわらず、
 実際にはより新しいプロトコルを期待しているターゲット・システムに接続しようとした場合、  実際にはより新しいプロトコルを期待しているターゲット・システムに接続しようとした場合、
 接続は失敗します。  接続は失敗します。
 この失敗は、  この失敗は、
 あたかも通信速度の不一致が原因であるかのように見えてしまいます。  あたかも通信速度の不一致が原因であるかのように見えてしまいます。
 @value{GDBN}は、  @value{GDBN}は、
 異なる回線速度によって再接続を繰り返し試みます。  異なる回線速度によって再接続を繰り返し試みます。
 割り込みによって、  割り込みによって、
 この処理を中断させることができます。  この処理を中断させることができます。
 @end quotation  @end quotation
   
 @item -brk  @item -brk
 接続する前にNindyターゲットをリセットするために、  接続する前にNindyターゲットをリセットするために、
 ターゲット・システムに対して最初に@code{BREAK}信号を送信するよう、  ターゲット・システムに対して最初に@code{BREAK}信号を送信するよう、
 @value{GDBN}に対して指定します。  @value{GDBN}に対して指定します。
   
 @quotation  @quotation
 @emph{注意}:多くのターゲット・システムは、  @emph{注意}:多くのターゲット・システムは、
 このオプションが必要とするハードウェアを備えていません。  このオプションが必要とするハードウェアを備えていません。
 このオプションは、  このオプションは、
 少数のボードでしか機能しません。  少数のボードでしか機能しません。
 @end quotation  @end quotation
 @end table  @end table
   
 標準の@samp{-b}オプションが、  標準の@samp{-b}オプションが、
 シリアル・ポート上で使用される回線速度を制御します。  シリアル・ポート上で使用される回線速度を制御します。
   
 @c @group  @c @group
 @node Nindy Reset  @node Nindy Reset
 @subsubsection Nindy resetコマンド  @subsubsection Nindy resetコマンド
   
 @table @code  @table @code
 @item reset  @item reset
 @kindex reset  @kindex reset
 ターゲットがNindyである場合、  ターゲットがNindyである場合、
 このコマンドはBREAK信号をリモートのターゲット・システムに送信します。  このコマンドはBREAK信号をリモートのターゲット・システムに送信します。
 これは、  これは、
 BREAK信号を受信したときにハード・リセット  BREAK信号を受信したときにハード・リセット
 (または、  (または、
 その他の興味深いアクション)  その他の興味深いアクション)
 を実行する回路がターゲットに備わっている場合にのみ役に立ちます。  を実行する回路がターゲットに備わっている場合にのみ役に立ちます。
 @end table  @end table
 @c @end group  @c @end group
 @end ifset  @end ifset
   
 @ifset AMD29K  @ifset AMD29K
 @node UDI29K Remote  @node UDI29K Remote
 @subsection AMD29K用のUDIプロトコル  @subsection AMD29K用のUDIプロトコル
   
 @cindex UDI  @cindex UDI
 @cindex AMD29K via UDI  @cindex AMD29K via UDI
 @cindex UDI経由のAMD29K[UDIけいゆのAMD29K]  @cindex UDI経由のAMD29K[UDIけいゆのAMD29K]
 @value{GDBN}は、  @value{GDBN}は、
 a29kプロセッサ・ファミリをデバッグするためのAMD UDI  a29kプロセッサ・ファミリをデバッグするためのAMD UDI
 (Universal Debugger Interface)  (Universal Debugger Interface)
 プロトコルをサポートしています。  プロトコルをサポートしています。
 MiniMONモニタを実行するAMDターゲットという構成を使うには、  MiniMONモニタを実行するAMDターゲットという構成を使うには、
 AMD社から無料で入手可能な@code{MONTIP}プログラムが必要になります。  AMD社から無料で入手可能な@code{MONTIP}プログラムが必要になります。
 また、  また、
 AMD社から入手可能なUDI準拠のa29kシミュレータ・プログラム@code{ISSTIP}とともに@value{GDBN}を使うこともできます。  AMD社から入手可能なUDI準拠のa29kシミュレータ・プログラム@code{ISSTIP}とともに@value{GDBN}を使うこともできます。
   
 @table @code  @table @code
 @item target udi @var{keyword}  @item target udi @var{keyword}
 @kindex udi  @kindex udi
 リモートのa29kボードまたはシミュレータへのUDIインターフェイスを選択します。  リモートのa29kボードまたはシミュレータへのUDIインターフェイスを選択します。
 @var{keyword}は、  @var{keyword}は、
 AMD構成ファイル@file{udi_soc}内のエントリです。  AMD構成ファイル@file{udi_soc}内のエントリです。
 このファイルには、  このファイルには、
 a29kターゲットに接続するときに使われるパラメータを指定する  a29kターゲットに接続するときに使われるパラメータを指定する
 キーワード・エントリが含まれます。  キーワード・エントリが含まれます。
 @file{udi_soc}ファイルが作業ディレクトリにない場合には、  @file{udi_soc}ファイルが作業ディレクトリにない場合には、
 環境変数@samp{UDICONF}にそのパス名を設定しなければなりません。  環境変数@samp{UDICONF}にそのパス名を設定しなければなりません。
 @end table  @end table
   
 @node EB29K Remote  @node EB29K Remote
 @subsection AMD29KのEBMONプロトコル  @subsection AMD29KのEBMONプロトコル
   
 @cindex EB29K board  @cindex EB29K board
 @cindex running 29K programs  @cindex running 29K programs
 @cindex EB29Kボード  @cindex EB29Kボード
 @cindex 29Kプログラムの実行[29Kプログラムのじっこう]  @cindex 29Kプログラムの実行[29Kプログラムのじっこう]
   
 AMD社は、  AMD社は、
 PC組み込み用の29K開発ボードを、  PC組み込み用の29K開発ボードを、
 DOS上で動作する@code{EBMON}というモニタ・プログラムとともに配布しています。  DOS上で動作する@code{EBMON}というモニタ・プログラムとともに配布しています。
 この開発システムは、  この開発システムは、
 省略してEB29Kと呼ばれます。  省略してEB29Kと呼ばれます。
 UNIXシステム上の@value{GDBN}を使ってEB29Kボード上でプログラムを実行するには、  UNIXシステム上の@value{GDBN}を使ってEB29Kボード上でプログラムを実行するには、
 まず  まず
 (EB29Kを組み込んだ)  (EB29Kを組み込んだ)
 PCとUNIXシステムのシリアル・ポートの間をシリアル回線で接続しなければなりません。  PCとUNIXシステムのシリアル・ポートの間をシリアル回線で接続しなければなりません。
 以下の節では、  以下の節では、
 PCの@file{COM1}ポートとUNIXシステムの@file{/dev/ttya}との間をケーブルで接続してあるものと仮定します。  PCの@file{COM1}ポートとUNIXシステムの@file{/dev/ttya}との間をケーブルで接続してあるものと仮定します。
   
 @menu  @menu
 * Comms (EB29K)::               通信セットアップ  * Comms (EB29K)::               通信セットアップ
 * gdb-EB29K::                   EB29Kクロス・デバッグ  * gdb-EB29K::                   EB29Kクロス・デバッグ
 * Remote Log::                  リモート・ログ  * Remote Log::                  リモート・ログ
 @end menu  @end menu
   
 @node Comms (EB29K)  @node Comms (EB29K)
 @subsubsection 通信セットアップ  @subsubsection 通信セットアップ
   
 PC上のDOSで以下のように実行することによって、  PC上のDOSで以下のように実行することによって、
 PCのポートをセットアップします。  PCのポートをセットアップします。
   
 @example  @example
 C:\> MODE com1:9600,n,8,1,none  C:\> MODE com1:9600,n,8,1,none
 @end example  @end example
   
 @noindent  @noindent
 MS DOS 4.0上で実行されているこの例では、  MS DOS 4.0上で実行されているこの例では、
 PCポートを通信速度9600 bps、  PCポートを通信速度9600 bps、
 パリティ・ビットなし、  パリティ・ビットなし、
 データ・ビット数8、  データ・ビット数8、
 ストップ・ビット数1、  ストップ・ビット数1、
 リトライなしに設定しています。  リトライなしに設定しています。
 UNIX側を設定する際には、  UNIX側を設定する際には、
 同一の通信パラメータを使わなければなりません。  同一の通信パラメータを使わなければなりません。
 @c FIXME: Who knows what this "no retry action" crud from the DOS manual may  @c FIXME: Who knows what this "no retry action" crud from the DOS manual may
 @c       mean?  It's optional; leave it out? ---doc@cygnus.com, 25feb91  @c       mean?  It's optional; leave it out? ---doc@cygnus.com, 25feb91 
   
 シリアル回線のUNIX側にPCの制御権を与えるには、  シリアル回線のUNIX側にPCの制御権を与えるには、
 DOSコンソール上で以下のように実行します。  DOSコンソール上で以下のように実行します。
   
 @example  @example
 C:\> CTTY com1  C:\> CTTY com1
 @end example  @end example
   
 @noindent  @noindent
 (後に、  (後に、
 DOSコンソールに制御を戻したいときには、  DOSコンソールに制御を戻したいときには、
 @code{CTTY con}コマンドを使うことができます。  @code{CTTY con}コマンドを使うことができます。
 ただし、  ただし、
 制御権を持っている装置からこのコマンドを送信する必要があります。  制御権を持っている装置からこのコマンドを送信する必要があります。
 ここでの例では、  ここでの例では、
 @file{COM1}に接続されているシリアル回線を通して送信することになります)。  @file{COM1}に接続されているシリアル回線を通して送信することになります)。
   
 UNIXのホストからは、  UNIXのホストからは、
 PCと通信するのに@code{tip}や@code{cu}のような通信プログラムを使います。  PCと通信するのに@code{tip}や@code{cu}のような通信プログラムを使います。
 以下に例を示します。  以下に例を示します。
   
 @example  @example
 cu -s 9600 -l /dev/ttya  cu -s 9600 -l /dev/ttya
 @end example  @end example
   
 @noindent  @noindent
 ここで示されている@code{cu}オプションはそれぞれ、  ここで示されている@code{cu}オプションはそれぞれ、
 使用する回線速度とシリアル・ポートを指定しています。  使用する回線速度とシリアル・ポートを指定しています。
 @code{tip}コマンドを使った場合は、  @code{tip}コマンドを使った場合は、
 コマンドラインは以下のようなものになるでしょう。  コマンドラインは以下のようなものになるでしょう。
   
 @example  @example
 tip -9600 /dev/ttya  tip -9600 /dev/ttya
 @end example  @end example
   
 @noindent  @noindent
 ここで@code{tip}への引数として指定した@file{/dev/ttya}の部分には、  ここで@code{tip}への引数として指定した@file{/dev/ttya}の部分には、
 システムによって異なる名前を指定する必要があるかもしれません。  システムによって異なる名前を指定する必要があるかもしれません。
 使用するポートを含む通信パラメータは、  使用するポートを含む通信パラメータは、
 ``remote''記述ファイルにおいて@code{tip}コマンドへの引数と関連付けられます。  ``remote''記述ファイルにおいて@code{tip}コマンドへの引数と関連付けられます。
 通常このファイルは、  通常このファイルは、
 システム・テーブル@file{/etc/remote}です。  システム・テーブル@file{/etc/remote}です。
 @c FIXME: What if anything needs doing to match the "n,8,1,none" part of  @c FIXME: What if anything needs doing to match the "n,8,1,none" part of
 @c the DOS side's comms setup?  cu can support -o (odd  @c the DOS side's comms setup?  cu can support -o (odd
 @c parity), -e (even parity)---apparently no settings for no parity or  @c parity), -e (even parity)---apparently no settings for no parity or
 @c for character size.  Taken from stty maybe...?  John points out tip  @c for character size.  Taken from stty maybe...?  John points out tip
 @c can set these as internal variables, eg ~s parity=none; man stty  @c can set these as internal variables, eg ~s parity=none; man stty
 @c suggests that it *might* work to stty these options with stdin or  @c suggests that it *might* work to stty these options with stdin or
 @c stdout redirected... ---doc@cygnus.com, 25feb91  @c stdout redirected... ---doc@cygnus.com, 25feb91
   
 @kindex EBMON  @kindex EBMON
 @code{tip}接続または@code{cu}接続を使用して  @code{tip}接続または@code{cu}接続を使用して
 DOSの作業ディレクトリを29Kプログラムが存在するディレクトリに変更し、  DOSの作業ディレクトリを29Kプログラムが存在するディレクトリに変更し、
 PCプログラム@code{EBMON}  PCプログラム@code{EBMON}
 (AMD社からボードとともに提供されるEB29K制御プログラム)  (AMD社からボードとともに提供されるEB29K制御プログラム)
 を起動します。  を起動します。
 以下に示す例によく似た、  以下に示す例によく似た、
 @code{EBMON}プロンプト@samp{#}で終わる@code{EBMON}の初期画面が表示されるはずです。  @code{EBMON}プロンプト@samp{#}で終わる@code{EBMON}の初期画面が表示されるはずです。
   
 @example  @example
 C:\> G:  C:\> G:
   
 G:\> CD \usr\joe\work29k  G:\> CD \usr\joe\work29k
   
 G:\USR\JOE\WORK29K> EBMON  G:\USR\JOE\WORK29K> EBMON
 Am29000 PC Coprocessor Board Monitor, version 3.0-18  Am29000 PC Coprocessor Board Monitor, version 3.0-18
 Copyright 1990 Advanced Micro Devices, Inc.  Copyright 1990 Advanced Micro Devices, Inc.
 Written by Gibbons and Associates, Inc.  Written by Gibbons and Associates, Inc.
   
 Enter '?' or 'H' for help  Enter '?' or 'H' for help
   
 PC Coprocessor Type   = EB29K  PC Coprocessor Type   = EB29K
 I/O Base              = 0x208  I/O Base              = 0x208
 Memory Base           = 0xd0000  Memory Base           = 0xd0000
   
 Data Memory Size      = 2048KB  Data Memory Size      = 2048KB
 Available I-RAM Range = 0x8000 to 0x1fffff  Available I-RAM Range = 0x8000 to 0x1fffff
 Available D-RAM Range = 0x80002000 to 0x801fffff  Available D-RAM Range = 0x80002000 to 0x801fffff
   
 PageSize              = 0x400  PageSize              = 0x400
 Register Stack Size   = 0x800  Register Stack Size   = 0x800
 Memory Stack Size     = 0x1800  Memory Stack Size     = 0x1800
   
 CPU PRL               = 0x3  CPU PRL               = 0x3
 Am29027 Available     = No  Am29027 Available     = No
 Byte Write Available  = Yes  Byte Write Available  = Yes
   
 # ~.  # ~.
 @end example  @end example
   
 続いて、  続いて、
 @code{cu}プログラムまたは@code{tip}プログラムを終了させます  @code{cu}プログラムまたは@code{tip}プログラムを終了させます
 (上の例では、  (上の例では、
 @code{EBMON}プロンプトにおいて@code{~.}を入力することで終了させています)。  @code{EBMON}プロンプトにおいて@code{~.}を入力することで終了させています)。
 @code{EBMON}は、  @code{EBMON}は、
 @value{GDBN}が制御権を獲得できる状態で、  @value{GDBN}が制御権を獲得できる状態で、
 実行を継続します。  実行を継続します。
   
 この例では、  この例では、
 PCとUNIXシステムの両方に同一の29Kプログラムが確実に存在するようにするのに、  PCとUNIXシステムの両方に同一の29Kプログラムが確実に存在するようにするのに、
 おそらく最も便利であろうと思われる方法を使うことを仮定しました。  おそらく最も便利であろうと思われる方法を使うことを仮定しました。
 それは、  それは、
 PC/NFSによる接続で、  PC/NFSによる接続で、
 UNIXホストのファイル・システムの1つをPCの@code{G:}ドライブとする方法です。  UNIXホストのファイル・システムの1つをPCの@code{G:}ドライブとする方法です。
 PC/NFS、  PC/NFS、
 あるいは、  あるいは、
 2つのシステム間を接続する類似の方法がない場合、  2つのシステム間を接続する類似の方法がない場合、
 フロッピ・ディスクによる転送など、  フロッピ・ディスクによる転送など、
 UNIXシステムからPCへ29Kプログラムを転送するための他の手段を準備する必要があります。  UNIXシステムからPCへ29Kプログラムを転送するための他の手段を準備する必要があります。
 @value{GDBN}は、  @value{GDBN}は、
 シリアル回線経由で29Kプログラムをダウンロードすることは@emph{しません}。  シリアル回線経由で29Kプログラムをダウンロードすることは@emph{しません}。
   
 @node gdb-EB29K  @node gdb-EB29K
 @subsubsection EB29Kクロス・デバッグ  @subsubsection EB29Kクロス・デバッグ
   
 最後に、  最後に、
 UNIXシステム上の29Kプログラムが存在するディレクトリに@code{cd}コマンドによって移動して、  UNIXシステム上の29Kプログラムが存在するディレクトリに@code{cd}コマンドによって移動して、
 @value{GDBN}を起動します。  @value{GDBN}を起動します。
 引数には、  引数には、
 29Kプログラムの名前を指定します。  29Kプログラムの名前を指定します。
   
 @example  @example
 cd /usr/joe/work29k  cd /usr/joe/work29k
 @value{GDBP} myfoo  @value{GDBP} myfoo
 @end example  @end example
   
 @need 500  @need 500
 これで@code{target}コマンドが使えるようになります。  これで@code{target}コマンドが使えるようになります。
   
 @example  @example
 target amd-eb /dev/ttya 9600 MYFOO  target amd-eb /dev/ttya 9600 MYFOO
 @c FIXME: test above 'target amd-eb' as spelled, with caps!  caps are meant to  @c FIXME: test above 'target amd-eb' as spelled, with caps!  caps are meant to
 @c emphasize that this is the name as seen by DOS (since I think DOS is  @c emphasize that this is the name as seen by DOS (since I think DOS is
 @c single-minded about case of letters).  ---doc@cygnus.com, 25feb91  @c single-minded about case of letters).  ---doc@cygnus.com, 25feb91
 @end example  @end example
   
 @noindent  @noindent
 この例では、  この例では、
 ユーザ・プログラムは@file{myfoo}と呼ばれるファイルであると仮定しています。  ユーザ・プログラムは@file{myfoo}と呼ばれるファイルであると仮定しています。
 @code{target amd-eb}に対して最後の引数として指定するファイル名は、  @code{target amd-eb}に対して最後の引数として指定するファイル名は、
 DOS上でのプログラム名でなければならない点に注意してください。  DOS上でのプログラム名でなければならない点に注意してください。
 この例では単に@code{MYFOO}となっていますが、  この例では単に@code{MYFOO}となっていますが、
 DOSのパス名を含むこともできますし、  DOSのパス名を含むこともできますし、
 転送メカニズムによっては、  転送メカニズムによっては、
 UNIX側での名前とは似ても似つかないものになることもあるでしょう。  UNIX側での名前とは似ても似つかないものになることもあるでしょう。
   
 ここまでくると、  ここまでくると、
 好きなようにブレイクポイントを設定することができます。  好きなようにブレイクポイントを設定することができます。
 29Kボード上でのプログラムの実行を監視する準備が整えば、  29Kボード上でのプログラムの実行を監視する準備が整えば、
 @value{GDBN}の@code{run}コマンドを使います。  @value{GDBN}の@code{run}コマンドを使います。
   
 リモート・プログラムのデバッグを停止するには、  リモート・プログラムのデバッグを停止するには、
 @value{GDBN}の@code{detach}コマンドを使います。  @value{GDBN}の@code{detach}コマンドを使います。
   
 PCの制御をPCコンソールに戻すには、@value{GDBN}セッションが終了した後に、  PCの制御をPCコンソールに戻すには、@value{GDBN}セッションが終了した後に、
 @code{EBMON}にアタッチするために、  @code{EBMON}にアタッチするために、
 もう一度@code{tip}または@code{cu}を使います。  もう一度@code{tip}または@code{cu}を使います。
 その後、  その後、
 @code{q}コマンドによって@code{EBMON}をシャットダウンし、  @code{q}コマンドによって@code{EBMON}をシャットダウンし、
 DOSのコマンドライン・インタープリタに制御を戻します。  DOSのコマンドライン・インタープリタに制御を戻します。
 @code{CTTY con}と入力して、  @code{CTTY con}と入力して、
 入力されたコマンドがメインのDOSコンソールによって受け取られるようにし、  入力されたコマンドがメインのDOSコンソールによって受け取られるようにし、
 @kbd{~.}を入力して@code{tip}または@code{cu}を終了させます。  @kbd{~.}を入力して@code{tip}または@code{cu}を終了させます。
   
 @node Remote Log  @node Remote Log
 @subsubsection リモート・ログ  @subsubsection リモート・ログ
 @kindex eb.log  @kindex eb.log
 @cindex log file for EB29K  @cindex log file for EB29K
 @cindex EB29K用のログ・ファイル[EB29Kようのログ・ファイル]  @cindex EB29K用のログ・ファイル[EB29Kようのログ・ファイル]
   
 @code{target amd-eb}コマンドは、  @code{target amd-eb}コマンドは、
 接続に関わる問題のデバッグを支援するため、  接続に関わる問題のデバッグを支援するため、
 カレントな作業ディレクトリに@file{eb.log}というファイルを作成します。  カレントな作業ディレクトリに@file{eb.log}というファイルを作成します。
 @file{eb.log}は、  @file{eb.log}は、
 @code{EBMON}に送信されたコマンドのエコーを含む、  @code{EBMON}に送信されたコマンドのエコーを含む、
 @code{EBMON}からのすべての出力を記録します。  @code{EBMON}からのすべての出力を記録します。
 別のウィンドウ内でこのファイルに対して@samp{tail -f}を実行すると、  別のウィンドウ内でこのファイルに対して@samp{tail -f}を実行すると、
 @code{EBMON}に関わる問題やPC側での予期せぬイベントを理解する助けになることがよくあります。  @code{EBMON}に関わる問題やPC側での予期せぬイベントを理解する助けになることがよくあります。
   
 @end ifset  @end ifset
   
 @ifset ST2000  @ifset ST2000
 @node ST2000 Remote  @node ST2000 Remote
 @subsection @value{GDBN}とTandem ST2000  @subsection @value{GDBN}とTandem ST2000
   
 ST2000をホスト・システムに接続する方法については、  ST2000をホスト・システムに接続する方法については、
 製造元のマニュアルを参照してください。  製造元のマニュアルを参照してください。
 ST2000が物理的に接続されれば、  ST2000が物理的に接続されれば、
 それをデバッグ環境として確立するには、以下を実行します。  それをデバッグ環境として確立するには、以下を実行します。
   
 @example  @example
 target st2000 @var{dev} @var{speed}  target st2000 @var{dev} @var{speed}
 @end example  @end example
   
 @noindent  @noindent
 @var{dev}は通常、  @var{dev}は通常、
 シリアル回線によってST2000と接続される@file{/dev/ttya}のようなシリアル装置の名前です。  シリアル回線によってST2000と接続される@file{/dev/ttya}のようなシリアル装置の名前です。
 代わりに、  代わりに、
 @code{@var{hostname}:@var{portnumber}}という構文を使って  @code{@var{hostname}:@var{portnumber}}という構文を使って
 (例えば、端末多重化装置経由で接続されたシリアル回線への)  (例えば、端末多重化装置経由で接続されたシリアル回線への)
 TCP接続として@var{dev}を指定することもできます。  TCP接続として@var{dev}を指定することもできます。
   
 このターゲットに対して、  このターゲットに対して、
 @code{load}コマンドと@code{attach}コマンドは定義されて@emph{いません}。  @code{load}コマンドと@code{attach}コマンドは定義されて@emph{いません}。
 通常スタンドアロンで操作している場合と同様、  通常スタンドアロンで操作している場合と同様、
 ST2000にユーザ・プログラムをロードしなければなりません。  ST2000にユーザ・プログラムをロードしなければなりません。
 @value{GDBN}は  @value{GDBN}は
 (シンボルのような)  (シンボルのような)
 デバッグ用の情報を、  デバッグ用の情報を、
 ホスト・コンピュータ上にある別のデバッグ・バージョンのプログラムから読みとります。  ホスト・コンピュータ上にある別のデバッグ・バージョンのプログラムから読みとります。
 @c FIXME!! This is terribly vague; what little content is here is  @c FIXME!! This is terribly vague; what little content is here is
 @c basically hearsay.  @c basically hearsay.
   
 @cindex ST2000 auxiliary commands  @cindex ST2000 auxiliary commands
 @cindex ST2000用の補助的なコマンド[ST2000ようのほじょてきなコマンド]  @cindex ST2000用の補助的なコマンド[ST2000ようのほじょてきなコマンド]
 ST2000での作業を支援するために、  ST2000での作業を支援するために、
 以下の補助的な@value{GDBN}コマンドが利用可能です。  以下の補助的な@value{GDBN}コマンドが利用可能です。
   
 @table @code  @table @code
 @item st2000 @var{command}  @item st2000 @var{command}
 @kindex st2000 @var{cmd}  @kindex st2000 @var{cmd}
 @cindex STDBUG commands (ST2000)  @cindex STDBUG commands (ST2000)
 @cindex commands to STDBUG (ST2000)  @cindex commands to STDBUG (ST2000)
 @cindex STDBUGコマンド(ST2000)  @cindex STDBUGコマンド(ST2000)
 @cindex コマンド、STDBUG(ST2000)に対する[コマンド、STDBUG(ST2000)にたいする]  @cindex コマンド、STDBUG(ST2000)に対する[コマンド、STDBUG(ST2000)にたいする]
 STDBUGモニタに@var{command}を送信します。  STDBUGモニタに@var{command}を送信します。
 利用できるコマンドについては、  利用できるコマンドについては、
 製造元のマニュアルを参照してください。  製造元のマニュアルを参照してください。
   
 @item connect  @item connect
 @cindex connect (to STDBUG)  @cindex connect (to STDBUG)
 @cindex connect(STDBUGに対する)[connect(STDBUGにたいする)]  @cindex connect(STDBUGに対する)[connect(STDBUGにたいする)]
 STDBUGコマンド・モニタに対して制御端末を接続します。  STDBUGコマンド・モニタに対して制御端末を接続します。
 STDBUGの操作が終了した後、  STDBUGの操作が終了した後、
 @kbd{@key{RET}~.}  @kbd{@key{RET}~.}
 (Returnキーに続いて、チルダとピリオドを入力)、  (Returnキーに続いて、チルダとピリオドを入力)、
 または、  または、
 @kbd{@key{RET}~@key{C-d}}  @kbd{@key{RET}~@key{C-d}}
 (Returnキーに続いて、チルダとControl-Dを入力)  (Returnキーに続いて、チルダとControl-Dを入力)
 のいずれかを入力することによって@value{GDBN}コマンド・プロンプトに戻ります。  のいずれかを入力することによって@value{GDBN}コマンド・プロンプトに戻ります。
 @end table  @end table
 @end ifset  @end ifset
   
 @ifset VXWORKS  @ifset VXWORKS
 @node VxWorks Remote  @node VxWorks Remote
 @subsection @value{GDBN}とVxWorks  @subsection @value{GDBN}とVxWorks
 @cindex VxWorks  @cindex VxWorks
   
 開発者は、  開発者は、
 @value{GDBN}を使用することによって、  @value{GDBN}を使用することによって、
 ネットワークに接続されたVxWorks端末上のタスクを、  ネットワークに接続されたVxWorks端末上のタスクを、
 UNIXのホストから起動してデバッグすることができます。  UNIXのホストから起動してデバッグすることができます。
 VxWorksシェルから起動され、  VxWorksシェルから起動され、
 既に実行中の状態のタスクをデバッグすることもできます。  既に実行中の状態のタスクをデバッグすることもできます。
 @value{GDBN}は、  @value{GDBN}は、
 UNIXホスト上で実行されるコードとVxWorksターゲット上で実行されるコードの両方を使います。  UNIXホスト上で実行されるコードとVxWorksターゲット上で実行されるコードの両方を使います。
 @code{gdb}は、  @code{gdb}は、
 UNIXホスト上にインストールされて実行されます  UNIXホスト上にインストールされて実行されます
 (ホスト上のプログラムをデバッグするのに使う@value{GDBN}と区別するために、  (ホスト上のプログラムをデバッグするのに使う@value{GDBN}と区別するために、
 @code{vxgdb}という名前でインストールされることもあります)。  @code{vxgdb}という名前でインストールされることもあります)。
   
 @table @code  @table @code
 @item VxWorks-timeout @var{args}  @item VxWorks-timeout @var{args}
 @kindex vxworks-timeout  @kindex vxworks-timeout
 すべてのVxWorksベースのターゲットが、  すべてのVxWorksベースのターゲットが、
 @code{vxworks-timeout}オプションをサポートするようになりました。  @code{vxworks-timeout}オプションをサポートするようになりました。
 このオプションはユーザによってセットされるもので、  このオプションはユーザによってセットされるもので、
 @var{args}は、  @var{args}は、
 @value{GDBN}がRPCの応答を待つ秒数を表わします。  @value{GDBN}がRPCの応答を待つ秒数を表わします。
 実際のVxWorksターゲットが速度の遅いソフトウェア・シミュレータであったり、  実際のVxWorksターゲットが速度の遅いソフトウェア・シミュレータであったり、
 帯域の小さいネットワーク回線を介して遠距離にある場合などに使うとよいでしょう。  帯域の小さいネットワーク回線を介して遠距離にある場合などに使うとよいでしょう。
 @end table  @end table
   
 VxWorksとの接続に関する以下の情報は、  VxWorksとの接続に関する以下の情報は、
 このマニュアルの作成時における最新の情報です。  このマニュアルの作成時における最新の情報です。
 新しくリリースされたVxWorksでは、  新しくリリースされたVxWorksでは、
 手順が変更されているかもしれません。  手順が変更されているかもしれません。
   
 @kindex INCLUDE_RDB  @kindex INCLUDE_RDB
 VxWorks上で@value{GDBN}を使うためには、  VxWorks上で@value{GDBN}を使うためには、
 VxWorksカーネルを再構築して、  VxWorksカーネルを再構築して、
 VxWorksライブラリ@file{rdb.a}の中のリモート・デバッグ用のインターフェイス・ルーチンを組み込む必要があります。  VxWorksライブラリ@file{rdb.a}の中のリモート・デバッグ用のインターフェイス・ルーチンを組み込む必要があります。
 そのためには、  そのためには、
 VxWorksのコンフィギュレーション・ファイル@file{configAll.h}の中で@code{INCLUDE_RDB}を定義して、  VxWorksのコンフィギュレーション・ファイル@file{configAll.h}の中で@code{INCLUDE_RDB}を定義して、
 VxWorksカーネルを再構築します。  VxWorksカーネルを再構築します。
 この結果として生成されるカーネルには@file{rdb.a}が組み込まれ、  この結果として生成されるカーネルには@file{rdb.a}が組み込まれ、
 VxWorksの起動時にソース・デバッグ用のタスク@code{tRdbTask}が起動されます。  VxWorksの起動時にソース・デバッグ用のタスク@code{tRdbTask}が起動されます。
 VxWorksの構成や再構築に関する詳細については、  VxWorksの構成や再構築に関する詳細については、
 製造元のマニュアルを参照してください。  製造元のマニュアルを参照してください。
 @c VxWorks, see the @cite{VxWorks Programmer's Guide}.  @c VxWorks, see the @cite{VxWorks Programmer's Guide}.
   
 VxWorksシステム・イメージへの@file{rdb.a}の組み込みが終わり、  VxWorksシステム・イメージへの@file{rdb.a}の組み込みが終わり、
 UNIXの実行ファイル・サーチ・パスに@value{GDBN}の存在するパスを加えれば、  UNIXの実行ファイル・サーチ・パスに@value{GDBN}の存在するパスを加えれば、
 @value{GDBN}を実行するための準備は完了です。  @value{GDBN}を実行するための準備は完了です。
 UNIXホストから@code{gdb}  UNIXホストから@code{gdb}
 (インストールの方法によっては@code{vxgdb})  (インストールの方法によっては@code{vxgdb})
 を実行します。  を実行します。
   
 @value{GDBN}が起動されて、  @value{GDBN}が起動されて、
 以下のプロンプトを表示します。  以下のプロンプトを表示します。
   
 @example  @example
 (vxgdb)  (vxgdb)
 @end example  @end example
   
 @menu  @menu
 * VxWorks Connection::          VxWorksへの接続  * VxWorks Connection::          VxWorksへの接続
 * VxWorks Download::            VxWorksダウンロード  * VxWorks Download::            VxWorksダウンロード
 * VxWorks Attach::              タスクの実行  * VxWorks Attach::              タスクの実行
 @end menu  @end menu
   
 @node VxWorks Connection  @node VxWorks Connection
 @subsubsection VxWorksへの接続  @subsubsection VxWorksへの接続
   
 @value{GDBN}の@code{target}コマンドによって、  @value{GDBN}の@code{target}コマンドによって、
 ネットワーク上のVxWorksターゲットに接続します。  ネットワーク上のVxWorksターゲットに接続します。
 @code{tt}というホスト名を持つターゲットに接続するには、  @code{tt}というホスト名を持つターゲットに接続するには、
 以下のようにします。  以下のようにします。
   
 @example  @example
 (vxgdb) target vxworks tt  (vxgdb) target vxworks tt
 @end example  @end example
   
 @need 750  @need 750
 @value{GDBN}は以下のようなメッセージを表示します。  @value{GDBN}は以下のようなメッセージを表示します。
   
 @smallexample  @smallexample
 Attaching remote machine across net...  Attaching remote machine across net... 
 Connected to tt.  Connected to tt.
 @end smallexample  @end smallexample
   
 @need 1000  @need 1000
 続いて@value{GDBN}は、  続いて@value{GDBN}は、
 最後にVxWorksターゲットが起動されたときより後にロードされた  最後にVxWorksターゲットが起動されたときより後にロードされた
 オブジェクト・モジュールのシンボル・テーブルを読み込もうと試みます。  オブジェクト・モジュールのシンボル・テーブルを読み込もうと試みます。
 @value{GDBN}は、  @value{GDBN}は、
 コマンドのサーチ・パスに含まれているディレクトリを探索することによって、  コマンドのサーチ・パスに含まれているディレクトリを探索することによって、
 これらのファイルを見つけます  これらのファイルを見つけます
 (@pxref{Environment, ,Your program's environment})。  (@pxref{Environment, ,Your program's environment})。
 オブジェクト・ファイルを見つけることができない場合には、  オブジェクト・ファイルを見つけることができない場合には、
 以下のようなメッセージを表示します。  以下のようなメッセージを表示します。
   
 @example  @example
 prog.o: No such file or directory.  prog.o: No such file or directory.
 @end example  @end example
   
 このような場合には、  このような場合には、
 @value{GDBN}の@code{path}コマンドによって適切なディレクトリを検索パスに加えてから、  @value{GDBN}の@code{path}コマンドによって適切なディレクトリを検索パスに加えてから、
 再度@code{target}コマンドを実行します。  再度@code{target}コマンドを実行します。
   
 @node VxWorks Download  @node VxWorks Download
 @subsubsection VxWorksダウンロード  @subsubsection VxWorksダウンロード
   
 @cindex download to VxWorks  @cindex download to VxWorks
 @cindex VxWorksへのダウンロード  @cindex VxWorksへのダウンロード
 VxWorksターゲットに接続済みの状態で、  VxWorksターゲットに接続済みの状態で、
 まだロードされていないオブジェクトをデバッグしたい場合には、  まだロードされていないオブジェクトをデバッグしたい場合には、
 @value{GDBN}の@code{load}コマンドを使ってUNIXからVxWorksへ追加的にファイルをダウンロードすることができます。  @value{GDBN}の@code{load}コマンドを使ってUNIXからVxWorksへ追加的にファイルをダウンロードすることができます。
 @code{load}コマンドの引数として指定されたオブジェクト・ファイルは、  @code{load}コマンドの引数として指定されたオブジェクト・ファイルは、
 実際には2回オープンされます。  実際には2回オープンされます。
 まず、  まず、
 コードをダウンロードするためにVxWorksターゲットによってオープンされ、  コードをダウンロードするためにVxWorksターゲットによってオープンされ、
 次にシンボル・テーブルを読み込むために@value{GDBN}によってオープンされます。  次にシンボル・テーブルを読み込むために@value{GDBN}によってオープンされます。
 2つのシステム上のカレントな作業ディレクトリが異なると、  2つのシステム上のカレントな作業ディレクトリが異なると、
 問題が発生します。  問題が発生します。
 両方のシステムが同一のファイル・システムをNFSマウントしているのであれば、  両方のシステムが同一のファイル・システムをNFSマウントしているのであれば、
 絶対パスを使うことで問題を回避することができます。  絶対パスを使うことで問題を回避することができます。
 そうでない場合は、  そうでない場合は、
 両方のシステム上で、  両方のシステム上で、
 オブジェクト・ファイルが存在するディレクトリを作業ディレクトリにして、  オブジェクト・ファイルが存在するディレクトリを作業ディレクトリにして、
 パスを一切使わずにファイル名だけでファイルを参照するのが、  パスを一切使わずにファイル名だけでファイルを参照するのが、
 最も簡単でしょう。  最も簡単でしょう。
 例えば、  例えば、
 プログラム@file{prog.o}が、  プログラム@file{prog.o}が、
 VxWorksでは@file{@var{vxpath}/vw/demo/rdb}に存在し、  VxWorksでは@file{@var{vxpath}/vw/demo/rdb}に存在し、
 ホストでは@file{@var{hostpath}/vw/demo/rdb}に存在するとしましょう。  ホストでは@file{@var{hostpath}/vw/demo/rdb}に存在するとしましょう。
 このプログラムをロードするには、  このプログラムをロードするには、
 VxWorks上で以下のように実行します。  VxWorks上で以下のように実行します。
   
 @example  @example
 -> cd "@var{vxpath}/vw/demo/rdb"  -> cd "@var{vxpath}/vw/demo/rdb"
 @end example  @end example
   
 @value{GDBN}上では、  @value{GDBN}上では、
 以下のように実行します。  以下のように実行します。
   
 @example  @example
 (vxgdb) cd @var{hostpath}/vw/demo/rdb  (vxgdb) cd @var{hostpath}/vw/demo/rdb 
 (vxgdb) load prog.o  (vxgdb) load prog.o
 @end example  @end example
   
 @value{GDBN}は次のような応答を表示します。  @value{GDBN}は次のような応答を表示します。
   
 @smallexample  @smallexample
 Reading symbol data from wherever/vw/demo/rdb/prog.o... done.  Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
 @end smallexample  @end smallexample
   
 ソース・ファイルを編集して再コンパイルした後に、  ソース・ファイルを編集して再コンパイルした後に、
 @code{load}コマンドを使ってオブジェクト・モジュールを再ロードすることもできます。  @code{load}コマンドを使ってオブジェクト・モジュールを再ロードすることもできます。
 ただし、  ただし、
 これを行うと、  これを行うと、
 @value{GDBN}はその時点で定義されているすべてのブレイクポイント、  @value{GDBN}はその時点で定義されているすべてのブレイクポイント、
 自動表示設定、  自動表示設定、
 コンビニエンス変数を削除し、  コンビニエンス変数を削除し、
 値ヒストリを初期化してしまいますので、  値ヒストリを初期化してしまいますので、
 注意してください  注意してください
 (これは、  (これは、
 ターゲット・システムのシンボル・テーブルを参照するデバッガのデータ構造の完全性を保つために必要です)。  ターゲット・システムのシンボル・テーブルを参照するデバッガのデータ構造の完全性を保つために必要です)。
   
 @node VxWorks Attach  @node VxWorks Attach
 @subsubsection タスクの実行  @subsubsection タスクの実行
   
 @cindex running VxWorks tasks  @cindex running VxWorks tasks
 @cindex VxWorksタスクの実行[VxWorksタスクの実行]  @cindex VxWorksタスクの実行[VxWorksタスクの実行]
 以下のように@code{attach}コマンドを使うことで、  以下のように@code{attach}コマンドを使うことで、
 既存のタスクにアタッチすることも可能です。  既存のタスクにアタッチすることも可能です。
   
 @example  @example
 (vxgdb) attach @var{task}  (vxgdb) attach @var{task}
 @end example  @end example
   
 @noindent  @noindent
 @var{task}は、  @var{task}は、
 VxWorksの16進数のタスクIDです。  VxWorksの16進数のタスクIDです。
 アタッチするときに、  アタッチするときに、
 タスクは実行中であってもサスペンドされていても構いません。  タスクは実行中であってもサスペンドされていても構いません。
 実行中であったタスクは、  実行中であったタスクは、
 アタッチされたときにサスペンドされます。  アタッチされたときにサスペンドされます。
 @end ifset  @end ifset
   
 @ifset SPARCLET  @ifset SPARCLET
 @node Sparclet Remote  @node Sparclet Remote
 @subsection @value{GDBN} と Sparclet  @subsection @value{GDBN} と Sparclet
 @cindex Sparclet  @cindex Sparclet
   
 開発者は、  開発者は、
 @value{GDBN}を使うことによって、  @value{GDBN}を使うことによって、
 Sparcletターゲット上で実行中のタスクをUnixホストからデバッグできるようになります。  Sparcletターゲット上で実行中のタスクをUnixホストからデバッグできるようになります。
 @value{GDBN}は、  @value{GDBN}は、
 Unixホスト上で実行されるコードとSparcletターゲット上で実行されるコードの両方を使用します。  Unixホスト上で実行されるコードとSparcletターゲット上で実行されるコードの両方を使用します。
 @code{gdb}は、  @code{gdb}は、
 Unixホスト上にインストールされて実行されます。  Unixホスト上にインストールされて実行されます。
   
 @table @code  @table @code
 @item timeout @var{args}  @item timeout @var{args}
 @kindex remotetimeout  @kindex remotetimeout
 @value{GDBN}はオプション@code{remotetimeout}をサポートするようになりました。  @value{GDBN}はオプション@code{remotetimeout}をサポートするようになりました。
 このオプションはユーザによって設定されるもので、  このオプションはユーザによって設定されるもので、
 @var{args}は@value{GDBN}が応答を待つ秒数を表わします。  @var{args}は@value{GDBN}が応答を待つ秒数を表わします。
 @end table  @end table
   
 @kindex Compiling  @kindex Compiling
 デバッグ用にコンパイルする際には、  デバッグ用にコンパイルする際には、
 デバッグ情報を得るために"-g"オプションを、  デバッグ情報を得るために"-g"オプションを、
 また、  また、
 ターゲット上でロードしたい位置にプログラムを再配置するために"-Ttext"オプションを指定します。  ターゲット上でロードしたい位置にプログラムを再配置するために"-Ttext"オプションを指定します。
 各セクションのサイズを小さくするために、  各セクションのサイズを小さくするために、
 "-n"または"-N"オプションを加えるのも良いでしょう。  "-n"または"-N"オプションを加えるのも良いでしょう。
   
 @example  @example
 sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N  sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
 @end example  @end example
   
 アドレスが意図したものと一致しているかどうかを検証するのに、  アドレスが意図したものと一致しているかどうかを検証するのに、
 objdumpを使うことができます。  objdumpを使うことができます。
   
 @example  @example
 sparclet-aout-objdump --headers --syms prog  sparclet-aout-objdump --headers --syms prog
 @end example  @end example
   
 @kindex Running  @kindex Running
 @value{GDBN}が見つかるようにUnixの実行サーチ・パスを設定すれば、  @value{GDBN}が見つかるようにUnixの実行サーチ・パスを設定すれば、
 @value{GDBN}を実行するための準備は完了です。  @value{GDBN}を実行するための準備は完了です。
 Unixホストから@code{gdb}  Unixホストから@code{gdb}
 (インストールの方法によっては、  (インストールの方法によっては、
 @code{sparclet-aout-gdb})  @code{sparclet-aout-gdb})
 を実行します。  を実行します。
   
 @value{GDBN}が起動されて、  @value{GDBN}が起動されて、
 以下のプロンプトを表示します。  以下のプロンプトを表示します。
   
 @example  @example
 (gdbslet)  (gdbslet)
 @end example  @end example
   
 @menu  @menu
 * Sparclet File::                デバッグするファイルの選択  * Sparclet File::                デバッグするファイルの選択
 * Sparclet Connection::          Sparcletへの接続  * Sparclet Connection::          Sparcletへの接続
 * Sparclet Download::            Sparcletダウンロード  * Sparclet Download::            Sparcletダウンロード
 * Sparclet Execution::           実行とデバッグ  * Sparclet Execution::           実行とデバッグ
 @end menu  @end menu
   
 @node Sparclet File  @node Sparclet File
 @subsubsection デバッグするファイルの選択  @subsubsection デバッグするファイルの選択
   
 @value{GDBN}の@code{file}コマンドによって、  @value{GDBN}の@code{file}コマンドによって、
 デバッグするプログラムを選択することができます。  デバッグするプログラムを選択することができます。
   
 @example  @example
 (gdbslet) file prog  (gdbslet) file prog
 @end example  @end example
   
 @need 1000  @need 1000
 このコマンドを実行すると、  このコマンドを実行すると、
 @value{GDBN}は@file{prog}のシンボル・テーブルを読み込もうとします。  @value{GDBN}は@file{prog}のシンボル・テーブルを読み込もうとします。
 @value{GDBN}は、  @value{GDBN}は、
 コマンド・サーチ・パスに含まれるディレクトリを探索することによって、  コマンド・サーチ・パスに含まれるディレクトリを探索することによって、
 そのファイルを見つけます。  そのファイルを見つけます。
 そのファイルがデバッグ情報付き  そのファイルがデバッグ情報付き
 (オプション"-g")  (オプション"-g")
 でコンパイルされた場合は、  でコンパイルされた場合は、
 ソース・ファイルも探します。  ソース・ファイルも探します。
 @value{GDBN}は、  @value{GDBN}は、
 ディレクトリ・サーチ・パス  ディレクトリ・サーチ・パス
 (@pxref{Environment, ,Your program's environment})  (@pxref{Environment, ,Your program's environment})
 に含まれるディレクトリを探索することによって、  に含まれるディレクトリを探索することによって、
 そのソース・ファイルを見つけます。  そのソース・ファイルを見つけます。
 ファイルが見つからない場合には、  ファイルが見つからない場合には、
 次のようなメッセージを表示します。  次のようなメッセージを表示します。
   
 @example  @example
 prog: No such file or directory.  prog: No such file or directory.
 @end example  @end example
   
 このメッセージが表示された場合には、  このメッセージが表示された場合には、
 @value{GDBN}の@code{path}コマンドと@code{dir}コマンドを使って適切なディレクトリをサーチ・パスに加えてから、  @value{GDBN}の@code{path}コマンドと@code{dir}コマンドを使って適切なディレクトリをサーチ・パスに加えてから、
 @code{target}コマンドを再実行します。  @code{target}コマンドを再実行します。
   
 @node Sparclet Connection  @node Sparclet Connection
 @subsubsection Sparcletへの接続  @subsubsection Sparcletへの接続
   
 @value{GDBN}の@code{target}コマンドによってSparcletターゲットに接続することができます。  @value{GDBN}の@code{target}コマンドによってSparcletターゲットに接続することができます。
 シリアル・ポート``@code{ttya}''でターゲットに接続するには、  シリアル・ポート``@code{ttya}''でターゲットに接続するには、
 以下のように入力します。  以下のように入力します。
   
 @example  @example
 (gdbslet) target sparclet /dev/ttya  (gdbslet) target sparclet /dev/ttya
 Remote target sparclet connected to /dev/ttya  Remote target sparclet connected to /dev/ttya
 main () at ../prog.c:3  main () at ../prog.c:3 
 @end example  @end example
   
 @need 750  @need 750
 @value{GDBN}は以下のようなメッセージを表示します。  @value{GDBN}は以下のようなメッセージを表示します。
   
 @smallexample  @smallexample
 Connected to ttya.  Connected to ttya.
 @end smallexample  @end smallexample
   
 @node Sparclet Download  @node Sparclet Download
 @subsubsection Sparcletダウンロード  @subsubsection Sparcletダウンロード
   
 @cindex download to Sparclet  @cindex download to Sparclet
 @cindex Sparcletへのダウンロード  @cindex Sparcletへのダウンロード
 Sparcletターゲットへの接続が完了すると、  Sparcletターゲットへの接続が完了すると、
 @value{GDBN}の@code{load}コマンドを使って、  @value{GDBN}の@code{load}コマンドを使って、
 ホストからターゲットへファイルをダウンロードすることができます。  ホストからターゲットへファイルをダウンロードすることができます。
 ファイル名とロード・オフセットを、  ファイル名とロード・オフセットを、
 @code{load}コマンドへの引数として渡さなければなりません。  @code{load}コマンドへの引数として渡さなければなりません。
 ファイル形式はaoutですので、  ファイル形式はaoutですので、
 プログラムはその開始アドレスにロードされなければなりません。  プログラムはその開始アドレスにロードされなければなりません。
 開始アドレスの値を知るにはobjdumpを使うことができます。  開始アドレスの値を知るにはobjdumpを使うことができます。
 ロード・オフセットとは、  ロード・オフセットとは、
 ファイルの個々のセクションのVMA(仮想メモリ・アドレス)に加算されるオフセットのことです。  ファイルの個々のセクションのVMA(仮想メモリ・アドレス)に加算されるオフセットのことです。
 例えば、  例えば、
 プログラム@file{prog}が、  プログラム@file{prog}が、
 textセクションのアドレス0x12010000、  textセクションのアドレス0x12010000、
 dataセクションのアドレス0x12010160、  dataセクションのアドレス0x12010160、
 bssセクションのアドレス0x12010170にリンクされているとすると、  bssセクションのアドレス0x12010170にリンクされているとすると、
 @value{GDBN}では以下のように入力します。  @value{GDBN}では以下のように入力します。
   
 @example  @example
 (gdbslet) load prog 0x12010000  (gdbslet) load prog 0x12010000
 Loading section .text, size 0xdb0 vma 0x12010000  Loading section .text, size 0xdb0 vma 0x12010000
 @end example  @end example
   
 プログラムがリンクされたアドレスとは異なるアドレスにコードがロードされた場合、  プログラムがリンクされたアドレスとは異なるアドレスにコードがロードされた場合、
 どこにシンボル・テーブルをマップするかを@value{GDBN}に通知するために、  どこにシンボル・テーブルをマップするかを@value{GDBN}に通知するために、
 @code{section}コマンドと@code{add-symbol-file}コマンドを使う必要があるかもしれません。  @code{section}コマンドと@code{add-symbol-file}コマンドを使う必要があるかもしれません。
   
 @node Sparclet Execution  @node Sparclet Execution
 @subsubsection 実行とデバッグ  @subsubsection 実行とデバッグ
   
 @cindex running and debugging Sparclet programs  @cindex running and debugging Sparclet programs
 @cindex Sparcletプログラムの実行とデバッグ[Sparcletプログラムのじっこうとデバッグ]  @cindex Sparcletプログラムの実行とデバッグ[Sparcletプログラムのじっこうとデバッグ]
 以上により、  以上により、
 @value{GDBN}の実行制御コマンドである@code{b}、  @value{GDBN}の実行制御コマンドである@code{b}、
 @code{step}、  @code{step}、
 @code{run}などを使ってタスクのデバッグを開始することができます。  @code{run}などを使ってタスクのデバッグを開始することができます。
 コマンドの一覧については、  コマンドの一覧については、
 @value{GDBN}のマニュアルを参照してください。  @value{GDBN}のマニュアルを参照してください。
   
 @example  @example
 (gdbslet) b main  (gdbslet) b main
 Breakpoint 1 at 0x12010000: file prog.c, line 3.  Breakpoint 1 at 0x12010000: file prog.c, line 3.
 (gdbslet) run  (gdbslet) run 
 Starting program: prog  Starting program: prog
 Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3  Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
 3        char *symarg = 0;  3        char *symarg = 0;
 (gdbslet) step  (gdbslet) step
 4        char *execarg = "hello!";  4        char *execarg = "hello!";
 (gdbslet)                            (gdbslet)                           
 @end example  @end example
   
 @end ifset  @end ifset
   
 @ifset H8  @ifset H8
 @node Hitachi Remote  @node Hitachi Remote
 @subsection @value{GDBN}と日立のマイクロ・プロセッサ  @subsection @value{GDBN}と日立のマイクロ・プロセッサ
   
 日立のSH、  日立のSH、
 H8/300、  H8/300、
 H8/500と通信するためには、  H8/500と通信するためには、
 @value{GDBN}は以下の情報を知っている必要があります。  @value{GDBN}は以下の情報を知っている必要があります。
   
 @enumerate  @enumerate
 @item  @item
 ユーザは、  ユーザは、
 日立マイクロ・プロセッサへのリモート・デバッグ用インターフェイスである@samp{target hms}と、  日立マイクロ・プロセッサへのリモート・デバッグ用インターフェイスである@samp{target hms}と、
 日立SHや日立300Hのインサーキット・エミュレータであるtarget@samp{e7000}のどちらを使用したいかということ  日立SHや日立300Hのインサーキット・エミュレータであるtarget@samp{e7000}のどちらを使用したいかということ
 (@value{GDBN}が日立SH、  (@value{GDBN}が日立SH、
 H8/300、  H8/300、
 H8/500用に特に構成されている場合には、  H8/500用に特に構成されている場合には、
 @samp{target hms}がデフォルトです)。  @samp{target hms}がデフォルトです)。
   
 @item  @item
 ホストと日立ボードを接続しているシリアル装置  ホストと日立ボードを接続しているシリアル装置
 (デフォルトは、  (デフォルトは、
 ホスト上で利用できる最初のシリアル装置です)  ホスト上で利用できる最初のシリアル装置です)
   
 @ifclear H8EXCLUSIVE  @ifclear H8EXCLUSIVE
 @c this is only for Unix hosts, not of interest to Hitachi  @c this is only for Unix hosts, not of interest to Hitachi
 @item  @item
 シリアル装置で使用する速度  シリアル装置で使用する速度
 @end ifclear  @end ifclear
 @end enumerate  @end enumerate
   
 @menu  @menu
 * Hitachi Boards::      日立ボードへの接続  * Hitachi Boards::      日立ボードへの接続
 * Hitachi ICE::         E7000インサーキット・エミュレータの使用  * Hitachi ICE::         E7000インサーキット・エミュレータの使用
 * Hitachi Special::     日立マイクロ・プロセッサ用の特別な@value{GDBN}コマンド  * Hitachi Special::     日立マイクロ・プロセッサ用の特別な@value{GDBN}コマンド
 @end menu  @end menu
   
 @node Hitachi Boards  @node Hitachi Boards
 @subsubsection 日立ボードへの接続  @subsubsection 日立ボードへの接続
   
 @ifclear H8EXCLUSIVE  @ifclear H8EXCLUSIVE
 @c only for Unix hosts  @c only for Unix hosts
 @kindex device  @kindex device
 @cindex serial device, Hitachi micros  @cindex serial device, Hitachi micros
 @cindex シリアル装置、日立マイクロ[シリアルそうち、ひたちマイクロ]  @cindex シリアル装置、日立マイクロ[シリアルそうち、ひたちマイクロ]
 シリアル装置を明示的に指定する必要があれば、  シリアル装置を明示的に指定する必要があれば、
 そのための専用コマンドである、  そのための専用コマンドである、
 @code{@value{GDBP}}の@samp{device @var{port}}コマンドを使用します。  @code{@value{GDBP}}の@samp{device @var{port}}コマンドを使用します。
 @c {{訳していたが}}  @c {{訳していたが}}
 @var{port}のデフォルトは、  @var{port}のデフォルトは、
 ホスト上で最初に利用可能なポートです。  ホスト上で最初に利用可能なポートです。
 これはUNIXホスト上でのみ必要であり、  これはUNIXホスト上でのみ必要であり、
 そこでは典型的には@file{/dev/ttya}という名前になります。  そこでは典型的には@file{/dev/ttya}という名前になります。
   
 @kindex speed  @kindex speed
 @cindex serial line speed, Hitachi micros  @cindex serial line speed, Hitachi micros
 @cindex シリアル回線速度、日立マイクロ[シリアルかいせんそくど、ひたちマイクロ]  @cindex シリアル回線速度、日立マイクロ[シリアルかいせんそくど、ひたちマイクロ]
 @code{@value{GDBP}}には、  @code{@value{GDBP}}には、
 通信速度を設定するための専用コマンド@samp{speed @var{bps}}があります。  通信速度を設定するための専用コマンド@samp{speed @var{bps}}があります。
 このコマンドもまた  このコマンドもまた
 UNIXホストからのみ使用されるものです。  UNIXホストからのみ使用されるものです。
 DOSホストでは通常どおり、  DOSホストでは通常どおり、
 @value{GDBN}からではなくDOSの@kbd{mode}コマンドによって回線速度を設定します  @value{GDBN}からではなくDOSの@kbd{mode}コマンドによって回線速度を設定します
 (例えば、  (例えば、
 9600 bpsの接続を確立するには@w{@samp{mode com2:9600,n,8,1,p}}のように実行します)。  9600 bpsの接続を確立するには@w{@samp{mode com2:9600,n,8,1,p}}のように実行します)。
   
 @samp{device}コマンドと@samp{speed}コマンドは、  @samp{device}コマンドと@samp{speed}コマンドは、
 日立マイクロ・プロセッサ・プログラムのデバッグにUNIXホストを使う場合のみ利用可能です。  日立マイクロ・プロセッサ・プログラムのデバッグにUNIXホストを使う場合のみ利用可能です。
 DOSホストを使う場合、  DOSホストを使う場合、
 @end ifclear  @end ifclear
 @value{GDBN}は、  @value{GDBN}は、
 PCのシリアル・ポート経由で開発ボードと通信するのに、  PCのシリアル・ポート経由で開発ボードと通信するのに、
 @code{asynctsr}と呼ばれる補助的な常駐プログラムに依存します。  @code{asynctsr}と呼ばれる補助的な常駐プログラムに依存します。
 DOS側でシリアル・ポートの設定をする場合にも、  DOS側でシリアル・ポートの設定をする場合にも、
 DOSの@code{mode}コマンドを使わなければなりません。  DOSの@code{mode}コマンドを使わなければなりません。
   
 @ifset DOSHOST  @ifset DOSHOST
 以下のサンプル・セッションは、  以下のサンプル・セッションは、
 @value{GDBN}の制御のもとに、  @value{GDBN}の制御のもとに、
 H8/300上においてプログラムを起動するのに必要とされる方法を示したものです。  H8/300上においてプログラムを起動するのに必要とされる方法を示したものです。
 この例では、  この例では、
 @file{t.x}という名前の  @file{t.x}という名前の
 H8/300サンプル・プログラムを使用します。  H8/300サンプル・プログラムを使用します。
 手順自体は、  手順自体は、
 日立(Hitachi)SHやH8/500でも同様です。  日立(Hitachi)SHやH8/500でも同様です。
   
 まず最初に、  まず最初に、
 開発ボードを取り付けます。  開発ボードを取り付けます。
 この例では、  この例では、
 シリアル・ポート@code{COM2}に接続したボードを使用します。  シリアル・ポート@code{COM2}に接続したボードを使用します。
 異なるシリアル・ポートを使用するのであれば、  異なるシリアル・ポートを使用するのであれば、
 @code{mode}コマンドの引数の中の名前を置き換えます。  @code{mode}コマンドの引数の中の名前を置き換えます。
 デバッガにより使用される補助的な通信プログラムである  デバッガにより使用される補助的な通信プログラムである
 @code{asynctsr}を呼び出すときには、  @code{asynctsr}を呼び出すときには、
 シリアル・ポート名の数字の部分だけを渡します。  シリアル・ポート名の数字の部分だけを渡します。
 例えば、  例えば、
 以下の例における@samp{asyncstr 2}は、  以下の例における@samp{asyncstr 2}は、
 @code{COM2}において@code{asyncstr}を実行します。  @code{COM2}において@code{asyncstr}を実行します。
   
 @example  @example
 C:\H8300\TEST> asynctsr 2  C:\H8300\TEST> asynctsr 2
 C:\H8300\TEST> mode com2:9600,n,8,1,p  C:\H8300\TEST> mode com2:9600,n,8,1,p
   
 Resident portion of MODE loaded  Resident portion of MODE loaded
   
 COM2: 9600, n, 8, 1, p  COM2: 9600, n, 8, 1, p
   
 @end example  @end example
   
 @quotation  @quotation
 @emph{注意:} PC-NFSには、  @emph{注意:} PC-NFSには、
 @code{asynctsr}と衝突するようなバグのあることが判明しています。  @code{asynctsr}と衝突するようなバグのあることが判明しています。
 DOSホスト上でPC-NFSを実行しているのであれば、  DOSホスト上でPC-NFSを実行しているのであれば、
 開発ボードを制御するのに@code{asynctsr}を使用するためには、  開発ボードを制御するのに@code{asynctsr}を使用するためには、
 PC-NFSを停止するか、  PC-NFSを停止するか、
 場合によっては、  場合によっては、
 PC-NFSが実行されないようにして  PC-NFSが実行されないようにして
 ホストを起動し直す必要があるかもしれません。  ホストを起動し直す必要があるかもしれません。
 @end quotation  @end quotation
   
 @kindex target hms  @kindex target hms
 シリアル通信がセットアップされて、  シリアル通信がセットアップされて、
 開発ボードが接続されれば、  開発ボードが接続されれば、
 @value{GDBN}を起動することができます。  @value{GDBN}を起動することができます。
 プログラムの名前を引数にして@code{@value{GDBP}}を呼び出します。  プログラムの名前を引数にして@code{@value{GDBP}}を呼び出します。
 @code{@value{GDBP}}は、  @code{@value{GDBP}}は、
 通常どおり、  通常どおり、
 @samp{(@value{GDBP})}というプロンプトによって入力待ちになります。  @samp{(@value{GDBP})}というプロンプトによって入力待ちになります。
 デバッグ・セッションを開始するには、  デバッグ・セッションを開始するには、
 2つの特別なコマンドを使用します。  2つの特別なコマンドを使用します。
 日立(Hitachi)ボードに対するクロス・デバッグを指定するには  日立(Hitachi)ボードに対するクロス・デバッグを指定するには
 @samp{target hms}コマンドを使用します。  @samp{target hms}コマンドを使用します。
 また、  また、
 ボードにプログラムをダウンロードするには  ボードにプログラムをダウンロードするには
 @code{load}コマンドを使用します。  @code{load}コマンドを使用します。
 @code{load}コマンドは、  @code{load}コマンドは、
 プログラムのセクション名を表示し、  プログラムのセクション名を表示し、
 さらに、  さらに、
 2Kのデータをダウンロードするたびに@samp{*}を表示します。  2Kのデータをダウンロードするたびに@samp{*}を表示します。
 (@value{GDBN}の持っているシンボルや実行ファイルに関するデータを  (@value{GDBN}の持っているシンボルや実行ファイルに関するデータを
 ダウンロードすることなく最新の状態にしたいのであれば、  ダウンロードすることなく最新の状態にしたいのであれば、
 @value{GDBN}の@code{file}コマンドや  @value{GDBN}の@code{file}コマンドや
 @code{symbol-file}コマンドを使用します。  @code{symbol-file}コマンドを使用します。
 これらのコマンドと@code{load}コマンド自体については、  これらのコマンドと@code{load}コマンド自体については、
 @ref{Files,,Commands to specify files}  @ref{Files,,Commands to specify files}
 に説明されています。)  に説明されています。)
   
 @smallexample  @smallexample
 (eg-C:\H8300\TEST) @value{GDBP} t.x  (eg-C:\H8300\TEST) @value{GDBP} t.x
 GDB is free software and you are welcome to distribute copies  GDB is free software and you are welcome to distribute copies
  of it under certain conditions; type "show copying" to see   of it under certain conditions; type "show copying" to see 
  the conditions.   the conditions.
 There is absolutely no warranty for GDB; type "show warranty"  There is absolutely no warranty for GDB; type "show warranty" 
 for details.  for details.
 GDB @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...  GDB @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
 (gdb) target hms  (gdb) target hms
 Connected to remote H8/300 HMS system.  Connected to remote H8/300 HMS system.
 (gdb) load t.x  (gdb) load t.x
 .text   : 0x8000 .. 0xabde ***********  .text   : 0x8000 .. 0xabde ***********
 .data   : 0xabde .. 0xad30 *  .data   : 0xabde .. 0xad30 *
 .stack  : 0xf000 .. 0xf014 *  .stack  : 0xf000 .. 0xf014 *
 @end smallexample  @end smallexample
   
 この時点において、  この時点において、
 プログラムを実行したりデバッグしたりする準備が整いました。  プログラムを実行したりデバッグしたりする準備が整いました。
 ここからは、  ここからは、
 普通の@value{GDBN}コマンドはすべて使用することができます。  普通の@value{GDBN}コマンドはすべて使用することができます。
 @code{break}コマンドによるブレイクポイントのセット、  @code{break}コマンドによるブレイクポイントのセット、
 @code{run}コマンドによるプログラムの実行開始、  @code{run}コマンドによるプログラムの実行開始、
 @code{print}コマンドや@code{x}コマンドによるデータの表示、  @code{print}コマンドや@code{x}コマンドによるデータの表示、
 ブレイクポイントにおける停止後の  ブレイクポイントにおける停止後の
 @code{continue}コマンドによる実行再開が可能です。  @code{continue}コマンドによる実行再開が可能です。
 @value{GDBN}のコマンドに関して詳細を知るには、  @value{GDBN}のコマンドに関して詳細を知るには、
 いつでも@code{help}コマンドを使用することができます。  いつでも@code{help}コマンドを使用することができます。
   
 しかし、  しかし、
 開発ボード上では、  開発ボード上では、
 @emph{オペレーティング・システム}の機能は利用できないということを  @emph{オペレーティング・システム}の機能は利用できないということを
 忘れないでください。  忘れないでください。
 例えば、  例えば、
 プログラムがハングしても、  プログラムがハングしても、
 割り込みを送信することはできません。  割り込みを送信することはできません。
 もちろん、  もちろん、
 @sc{reset}ボタンを押すことはできます!  @sc{reset}ボタンを押すことはできます!
   
 開発ボード上で以下のことを行うには、  開発ボード上で以下のことを行うには、
 @sc{reset}ボタンを使用してください。  @sc{reset}ボタンを使用してください。
 @itemize @bullet  @itemize @bullet
 @item  @item
 プログラムに割り込みをかける。  プログラムに割り込みをかける。
 (DOSホスト上で@kbd{ctl-C}を使用しないでください。  (DOSホスト上で@kbd{ctl-C}を使用しないでください。
 DOSホストから開発ボードに対して割り込みシグナルを送る方法はありません。)  DOSホストから開発ボードに対して割り込みシグナルを送る方法はありません。)
   
 @item  @item
 プログラムが正常終了した後に、  プログラムが正常終了した後に、
 @value{GDBN}のコマンド・プロンプトに戻る。  @value{GDBN}のコマンド・プロンプトに戻る。
 通信プロトコルは、  通信プロトコルは、
 @value{GDBN}がプログラムの完了を検出するための方法をこれ以外に提供していません。  @value{GDBN}がプログラムの完了を検出するための方法をこれ以外に提供していません。
 @end itemize  @end itemize
   
 どちらの場合でも、  どちらの場合でも、
 開発ボード上での@sc{reset}は、  開発ボード上での@sc{reset}は、
 @value{GDBN}からはプログラムの「正常終了」と見えます。  @value{GDBN}からはプログラムの「正常終了」と見えます。
 @end ifset  @end ifset
   
 @node Hitachi ICE  @node Hitachi ICE
 @subsubsection E7000インサーキット・エミュレータの使用  @subsubsection E7000インサーキット・エミュレータの使用
   
 @kindex target e7000  @kindex target e7000
 E7000インサーキット・エミュレータを使って、  E7000インサーキット・エミュレータを使って、
 日立SHまたはH8/300H用のコードを開発することができます。  日立SHまたはH8/300H用のコードを開発することができます。
 @samp{target e7000}コマンドを以下のいずれかの形式で使って、  @samp{target e7000}コマンドを以下のいずれかの形式で使って、
 @value{GDBN}をE7000に接続します。  @value{GDBN}をE7000に接続します。
   
 @table @code  @table @code
 @item target e7000 @var{port} @var{speed}  @item target e7000 @var{port} @var{speed}
 E7000がシリアル・ポートに接続されている場合は、  E7000がシリアル・ポートに接続されている場合は、
 この形式を使ってください。  この形式を使ってください。
 引数@var{port}が、  引数@var{port}が、
 使用するシリアル・ポートを指定します  使用するシリアル・ポートを指定します
 (例えば、  (例えば、
 @samp{com2})。  @samp{com2})。
 3番目の引数は、  3番目の引数は、
 秒あたりのビット数による回線速度です  秒あたりのビット数による回線速度です
 (例えば、  (例えば、
 @samp{9600})。  @samp{9600})。
   
 @item target e7000 @var{hostname}  @item target e7000 @var{hostname}
 E7000がTCP/IPネットワーク上のホストとしてインストールされている場合、  E7000がTCP/IPネットワーク上のホストとしてインストールされている場合、
 ホスト名だけを指定することもできます。  ホスト名だけを指定することもできます。
 @value{GDBN}は接続に@code{telnet}を使います。  @value{GDBN}は接続に@code{telnet}を使います。
 @end table  @end table
   
 @node Hitachi Special  @node Hitachi Special
 @subsubsection 日立マイクロ・プロセッサ用の特別な@value{GDBN}コマンド  @subsubsection 日立マイクロ・プロセッサ用の特別な@value{GDBN}コマンド
   
 いくつかの@value{GDBN}コマンドは、  いくつかの@value{GDBN}コマンドは、
 H8/300またはH8/500用に構成された場合にのみ利用可能です。  H8/300またはH8/500用に構成された場合にのみ利用可能です。
   
 @table @code  @table @code
 @kindex set machine  @kindex set machine
 @kindex show machine  @kindex show machine
 @item set machine h8300  @item set machine h8300
 @itemx set machine h8300h  @itemx set machine h8300h
 @samp{set machine}コマンドによって、  @samp{set machine}コマンドによって、
 2種類のH8/300アーキテクチャのどちらか一方にあわせて@value{GDBN}を調整します。  2種類のH8/300アーキテクチャのどちらか一方にあわせて@value{GDBN}を調整します。
 @samp{show machine}コマンドによって、  @samp{show machine}コマンドによって、
 現在有効なアーキテクチャを調べることができます。  現在有効なアーキテクチャを調べることができます。
   
 @kindex set memory @var{mod}  @kindex set memory @var{mod}
 @cindex memory models, H8/500  @cindex memory models, H8/500
 @cindex メモリ・モデル、H8/500  @cindex メモリ・モデル、H8/500
 @item set memory @var{mod}  @item set memory @var{mod}
 @itemx show memory  @itemx show memory
 @samp{set memory}コマンドによって、  @samp{set memory}コマンドによって、
 使用中のH8/500メモリ・モデル  使用中のH8/500メモリ・モデル
 (@var{mod})  (@var{mod})
 を指定します。  を指定します。
 @samp{show memory}コマンドによって、  @samp{show memory}コマンドによって、
 現在有効なメモリ・モデルを調べます。  現在有効なメモリ・モデルを調べます。
 @var{mod}に指定可能な値は、  @var{mod}に指定可能な値は、
 @code{small}、  @code{small}、
 @code{big}、  @code{big}、
 @code{medium}、  @code{medium}、
 @code{compact}のいずれかです。  @code{compact}のいずれかです。
 @end table  @end table
   
 @end ifset  @end ifset
   
 @ifset MIPS  @ifset MIPS
 @node MIPS Remote  @node MIPS Remote
 @subsection @value{GDBN}とリモートMIPSボード  @subsection @value{GDBN}とリモートMIPSボード
   
 @cindex MIPS boards  @cindex MIPS boards
 @cindex MIPSボード  @cindex MIPSボード
 @value{GDBN}は、  @value{GDBN}は、
 MIPSのリモート・デバッグ用のプロトコルを使って、  MIPSのリモート・デバッグ用のプロトコルを使って、
 シリアル回線に接続されたMIPSボードと通信することができます。  シリアル回線に接続されたMIPSボードと通信することができます。
 これは、  これは、
 @value{GDBN}を@samp{--target=mips-idt-ecoff}によって構成することによって、  @value{GDBN}を@samp{--target=mips-idt-ecoff}によって構成することによって、
 利用することができます。  利用することができます。
   
 @need 1000  @need 1000
 ターゲット・ボードとの接続を指定するには、  ターゲット・ボードとの接続を指定するには、
 以下の@value{GDBN}コマンドを使用します。  以下の@value{GDBN}コマンドを使用します。
   
 @table @code  @table @code
 @item target mips @var{port}  @item target mips @var{port}
 @kindex target mips @var{port}  @kindex target mips @var{port}
 ボード上でプログラムを実行するには、  ボード上でプログラムを実行するには、
 引数にユーザ・プログラムの名前を指定して@code{@value{GDBP}}を起動します。  引数にユーザ・プログラムの名前を指定して@code{@value{GDBP}}を起動します。
 ボードに接続するには、  ボードに接続するには、
 @samp{target mips @var{port}}コマンドを使用します。  @samp{target mips @var{port}}コマンドを使用します。
 @var{port}は、  @var{port}は、
 ボードに接続されているシリアル・ポートの名前です。  ボードに接続されているシリアル・ポートの名前です。
 プログラムがまだボードにダウンロードされていないのであれば、  プログラムがまだボードにダウンロードされていないのであれば、
 @code{load}コマンドを使ってダウンロードすることができます。  @code{load}コマンドを使ってダウンロードすることができます。
 その後、  その後、
 通常利用できるすべての@value{GDBN}コマンドを使うことができます。  通常利用できるすべての@value{GDBN}コマンドを使うことができます。
   
 例えば以下の手順では、  例えば以下の手順では、
 デバッガを使うことによって、  デバッガを使うことによって、
 シリアル・ポートを経由してターゲット・ボードに接続した後に、  シリアル・ポートを経由してターゲット・ボードに接続した後に、
 @var{prog}と呼ばれるプログラムをロードして実行しています。  @var{prog}と呼ばれるプログラムをロードして実行しています。
   
 @example  @example
 host$ @value{GDBP} @var{prog}  host$ @value{GDBP} @var{prog}
 GDB is free software and @dots{}  GDB is free software and @dots{}
 (gdb) target mips /dev/ttyb  (gdb) target mips /dev/ttyb
 (gdb) load @var{prog}  (gdb) load @var{prog}
 (gdb) run  (gdb) run
 @end example  @end example
   
 @item target mips @var{hostname}:@var{portnumber}  @item target mips @var{hostname}:@var{portnumber}
 @value{GDBN}のホスト構成によっては、  @value{GDBN}のホスト構成によっては、
 @samp{@var{hostname}:@var{portnumber}}という構文を使うことで、  @samp{@var{hostname}:@var{portnumber}}という構文を使うことで、
 シリアル・ポートの代わりに  シリアル・ポートの代わりに
 (例えば、  (例えば、
 端末多重化装置によって管理されているシリアル回線への)  端末多重化装置によって管理されているシリアル回線への)
 TCP接続を指定することができます。  TCP接続を指定することができます。
   
 @item target pmon @var{port}  @item target pmon @var{port}
 @kindex target pmon @var{port}  @kindex target pmon @var{port}
   
 @item target ddb @var{port}  @item target ddb @var{port}
 @kindex target ddb @var{port}  @kindex target ddb @var{port}
   
 @item target lsi @var{port}  @item target lsi @var{port}
 @kindex target lsi @var{port}  @kindex target lsi @var{port}
   
 @end table  @end table
   
   
 @noindent  @noindent
 @value{GDBN}は、  @value{GDBN}は、
 MIPSターゲットに対して、  MIPSターゲットに対して、
 以下の特別なコマンドもサポートしています。  以下の特別なコマンドもサポートしています。
   
 @table @code  @table @code
 @item set processor @var{args}  @item set processor @var{args}
 @itemx show processor  @itemx show processor
 @kindex set processor @var{args}  @kindex set processor @var{args}
 @kindex show processor  @kindex show processor
 プロセッサの種類に固有のレジスタにアクセスしたい場合には、  プロセッサの種類に固有のレジスタにアクセスしたい場合には、
 @code{set processor}コマンドを使ってMIPSプロセッサの種類を設定します。  @code{set processor}コマンドを使ってMIPSプロセッサの種類を設定します。
 例えば、  例えば、
 @code{set processor r3041}は、  @code{set processor r3041}は、
 3041チップで有効なCPOレジスタを使うよう、  3041チップで有効なCPOレジスタを使うよう、
 @value{GDBN}に対して通知します。  @value{GDBN}に対して通知します。
 @value{GDBN}が使っているMIPSプロセッサの種類を知るには、  @value{GDBN}が使っているMIPSプロセッサの種類を知るには、
 @code{show processor}コマンドを使います。  @code{show processor}コマンドを使います。
 @value{GDBN}が使っているレジスタを知るには、  @value{GDBN}が使っているレジスタを知るには、
 @code{info reg}コマンドを使います。  @code{info reg}コマンドを使います。
   
 @item set mipsfpu double  @item set mipsfpu double
 @itemx set mipsfpu single  @itemx set mipsfpu single
 @itemx set mipsfpu none  @itemx set mipsfpu none
 @itemx show mipsfpu  @itemx show mipsfpu
 @kindex set mipsfpu  @kindex set mipsfpu
 @kindex show mipsfpu  @kindex show mipsfpu
 @cindex MIPS remote floating point  @cindex MIPS remote floating point
 @cindex floating point, MIPS remote  @cindex floating point, MIPS remote
 @cindex MIPSリモート浮動小数点[MIPSリモートふどうしょうすうてん]  @cindex MIPSリモート浮動小数点[MIPSリモートふどうしょうすうてん]
 @cindex 浮動小数点、MIPSリモートの[ふどうしょうすうてん、MIPSリモートの]  @cindex 浮動小数点、MIPSリモートの[ふどうしょうすうてん、MIPSリモートの]
 MIPS浮動小数点コプロセッサをサポートしないターゲット・ボードを使う場合は、  MIPS浮動小数点コプロセッサをサポートしないターゲット・ボードを使う場合は、
 @samp{set mipsfpu none}コマンドを使う必要があります  @samp{set mipsfpu none}コマンドを使う必要があります
 @c {{原文では、「初期化ファイル」ではなく@value{GDBINIT}であるが、}}  @c {{原文では、「初期化ファイル」ではなく@value{GDBINIT}であるが、}}
 @c {{GDBINITがセットされていないためエラーになっている            }}  @c {{GDBINITがセットされていないためエラーになっている            }}
 (このようなことが必要な場合には、  (このようなことが必要な場合には、
 初期化ファイルの中にそのコマンドを入れてしまってもよいでしょう)。  初期化ファイルの中にそのコマンドを入れてしまってもよいでしょう)。
 これによって、  これによって、
 浮動小数値を返す関数の戻り値を見つける方法を@value{GDBN}に知らせます。  浮動小数値を返す関数の戻り値を見つける方法を@value{GDBN}に知らせます。
 またこれにより、  またこれにより、
 ボード上で関数を呼び出すときに、  ボード上で関数を呼び出すときに、
 @value{GDBN}は浮動小数点レジスタの内容を退避する必要がなくなります。  @value{GDBN}は浮動小数点レジスタの内容を退避する必要がなくなります。
 @sc{R4650}プロセッサ上にあるような、  @sc{R4650}プロセッサ上にあるような、
 単精度浮動小数だけをサポートする浮動小数点コプロセッサを使っている場合には、  単精度浮動小数だけをサポートする浮動小数点コプロセッサを使っている場合には、
 @samp{set mipsfpu single}コマンドを使います。  @samp{set mipsfpu single}コマンドを使います。
 デフォルトの倍精度浮動小数点コプロセッサは、  デフォルトの倍精度浮動小数点コプロセッサは、
 @samp{set mipsfpu double}によって選択することができます。  @samp{set mipsfpu double}によって選択することができます。
   
 以前のバージョンでは、  以前のバージョンでは、
 有効な選択肢は、  有効な選択肢は、
 倍精度浮動小数コプロセッサを使う設定と浮動小数点コプロセッサを使わない設定だけでした。  倍精度浮動小数コプロセッサを使う設定と浮動小数点コプロセッサを使わない設定だけでした。
 したがって、  したがって、
 @samp{set mipsfpu on}で倍精度浮動小数コプロセッサが選択され、  @samp{set mipsfpu on}で倍精度浮動小数コプロセッサが選択され、
 @samp{set mipsfpu off}で浮動小数点コプロセッサを使わないという設定が選択されていました。  @samp{set mipsfpu off}で浮動小数点コプロセッサを使わないという設定が選択されていました。
   
 他の場合と同様、  他の場合と同様、
 @code{mipsfpu}変数に関する設定は、  @code{mipsfpu}変数に関する設定は、
 @samp{show mipsfpu}によって問い合わせることができます。  @samp{show mipsfpu}によって問い合わせることができます。
   
 @item set remotedebug @var{n}  @item set remotedebug @var{n}
 @itemx show remotedebug  @itemx show remotedebug
 @kindex set remotedebug  @kindex set remotedebug
 @kindex show remotedebug  @kindex show remotedebug
 @cindex @code{remotedebug}, MIPS protocol  @cindex @code{remotedebug}, MIPS protocol
 @cindex MIPS @code{remotedebug} protocol  @cindex MIPS @code{remotedebug} protocol
 @cindex @code{remotedebug}、MIPSプロトコル  @cindex @code{remotedebug}、MIPSプロトコル
 @cindex MIPS @code{remotedebug}プロトコル  @cindex MIPS @code{remotedebug}プロトコル
 @c FIXME! For this to be useful, you must know something about the MIPS  @c FIXME! For this to be useful, you must know something about the MIPS
 @c FIXME...protocol.  Where is it described?  @c FIXME...protocol.  Where is it described?
 @code{remotedebug}変数を設定することによって、  @code{remotedebug}変数を設定することによって、
 ボードとの通信に関するいくつかのデバッグ用の情報を見ることができます。  ボードとの通信に関するいくつかのデバッグ用の情報を見ることができます。
 @samp{set remotedebug 1}によって値@code{1}を設定すると、  @samp{set remotedebug 1}によって値@code{1}を設定すると、
 すべてのパケットが表示されます。  すべてのパケットが表示されます。
 値を@code{2}に設定すると、  値を@code{2}に設定すると、
 すべての文字が表示されます。  すべての文字が表示されます。
 @samp{show remotedebug}コマンドによって、  @samp{show remotedebug}コマンドによって、
 いつでも現在の設定値を調べることができます。  いつでも現在の設定値を調べることができます。
   
 @item set timeout @var{seconds}  @item set timeout @var{seconds}
 @itemx set retransmit-timeout @var{seconds}  @itemx set retransmit-timeout @var{seconds}
 @itemx show timeout  @itemx show timeout
 @itemx show retransmit-timeout  @itemx show retransmit-timeout
 @cindex @code{timeout}, MIPS protocol  @cindex @code{timeout}, MIPS protocol
 @cindex @code{retransmit-timeout}, MIPS protocol  @cindex @code{retransmit-timeout}, MIPS protocol
 @cindex @code{timeout}、MIPSプロトコル  @cindex @code{timeout}、MIPSプロトコル
 @cindex @code{retransmit-timeout}、MIPSプロトコル  @cindex @code{retransmit-timeout}、MIPSプロトコル
 @kindex set timeout  @kindex set timeout
 @kindex show timeout  @kindex show timeout
 @kindex set retransmit-timeout  @kindex set retransmit-timeout
 @kindex show retransmit-timeout  @kindex show retransmit-timeout
 MIPSリモート・プロトコルにおけるパケット待ちの状態でのタイムアウト時間を、  MIPSリモート・プロトコルにおけるパケット待ちの状態でのタイムアウト時間を、
 @code{set timeout @var{seconds}}コマンドで制御することができます。  @code{set timeout @var{seconds}}コマンドで制御することができます。
 デフォルトは5秒です。  デフォルトは5秒です。
 同様に、  同様に、
 パケットに対する確認  パケットに対する確認
 (ACK)  (ACK)
 を待っている状態でのタイムアウト時間を、  を待っている状態でのタイムアウト時間を、
 @code{set retransmit-timeout @var{seconds}}コマンドで制御することができます。  @code{set retransmit-timeout @var{seconds}}コマンドで制御することができます。
 デフォルトは3秒です。  デフォルトは3秒です。
 それぞれの値を@code{show timeout}と@code{show retransmit-timeout}で調べることができます  それぞれの値を@code{show timeout}と@code{show retransmit-timeout}で調べることができます
 (どちらのコマンドも、  (どちらのコマンドも、
 @value{GDBN}が@samp{--target=mips-idt-ecoff}用に構成されている場合@emph{のみ}使用可能です)。  @value{GDBN}が@samp{--target=mips-idt-ecoff}用に構成されている場合@emph{のみ}使用可能です)。
   
 @code{set timeout}で設定されたタイムアウト時間は、  @code{set timeout}で設定されたタイムアウト時間は、
 ユーザ・プログラムが停止するのを@value{GDBN}が待っている間は適用されません。  ユーザ・プログラムが停止するのを@value{GDBN}が待っている間は適用されません。
 この場合には、  この場合には、
 @value{GDBN}は永遠に待ち続けます。  @value{GDBN}は永遠に待ち続けます。
 これは、  これは、
 停止するまでにプログラムがどの程度長く実行を継続するのかを知る方法がないからです。  停止するまでにプログラムがどの程度長く実行を継続するのかを知る方法がないからです。
 @end table  @end table
 @end ifset  @end ifset
   
 @ifset SIMS  @ifset SIMS
 @node Simulator  @node Simulator
 @subsection シミュレートされたCPUターゲット  @subsection シミュレートされたCPUターゲット
   
 @ifset GENERIC  @ifset GENERIC
 @cindex simulator  @cindex simulator
 @cindex simulator, Z8000  @cindex simulator, Z8000
 @cindex Z8000 simulator  @cindex Z8000 simulator
 @cindex simulator, H8/300 or H8/500  @cindex simulator, H8/300 or H8/500
 @cindex H8/300 or H8/500 simulator  @cindex H8/300 or H8/500 simulator
 @cindex simulator, Hitachi SH  @cindex simulator, Hitachi SH
 @cindex Hitachi SH simulator  @cindex Hitachi SH simulator
 @cindex CPU simulator  @cindex CPU simulator
 @cindex シミュレータ  @cindex シミュレータ
 @cindex シミュレータ、Z8000  @cindex シミュレータ、Z8000
 @cindex Z8000シミュレータ  @cindex Z8000シミュレータ
 @cindex シミュレータ、H8/300またはH8/500  @cindex シミュレータ、H8/300またはH8/500
 @cindex H8/300またはH8/500のシミュレータ  @cindex H8/300またはH8/500のシミュレータ
 @cindex シミュレータ、日立SH[シミュレータ、ひたちSH]  @cindex シミュレータ、日立SH[シミュレータ、ひたちSH]
 @cindex 日立SHシミュレータ[ひたちSHシミュレータ]  @cindex 日立SHシミュレータ[ひたちSHシミュレータ]
 @cindex CPUシミュレータ  @cindex CPUシミュレータ
 構成によっては、  構成によっては、
 ユーザ・プログラムをデバッグする際にハードウェアCPUの代わりに使うことのできるCPUシミュレータが、  ユーザ・プログラムをデバッグする際にハードウェアCPUの代わりに使うことのできるCPUシミュレータが、
 @value{GDBN}の中に組み込まれています。  @value{GDBN}の中に組み込まれています。
 現在のところ、  現在のところ、
 ARM、D10V、D30V、FR30、H8/300、H8/500、  ARM、D10V、D30V、FR30、H8/300、H8/500、
 i960、M32R、MIPS、MN10200、MN10300、  i960、M32R、MIPS、MN10200、MN10300、
 PowerPC、SH、Sparc、V850、W65、Z8000  PowerPC、SH、Sparc、V850、W65、Z8000
 用のシミュレータが利用できます。  用のシミュレータが利用できます。
 @end ifset  @end ifset
   
 @ifclear GENERIC  @ifclear GENERIC
 @ifset H8  @ifset H8
 @cindex simulator, H8/300 or H8/500  @cindex simulator, H8/300 or H8/500
 @cindex Hitachi H8/300 or H8/500 simulator  @cindex Hitachi H8/300 or H8/500 simulator
 @cindex simulator, Hitachi SH  @cindex simulator, Hitachi SH
 @cindex Hitachi SH simulator  @cindex Hitachi SH simulator
 @cindex シミュレータ、H8/300またはH8/500  @cindex シミュレータ、H8/300またはH8/500
 @cindex 日立H8/300またはH8/500シミュレータ[ひたちH8/300またはH8/500シミュレータ]  @cindex 日立H8/300またはH8/500シミュレータ[ひたちH8/300またはH8/500シミュレータ]
 @cindex シミュレータ、日立SH[シミュレータ、ひたちSH]  @cindex シミュレータ、日立SH[シミュレータ、ひたちSH]
 @cindex 日立SHシミュレータ[ひたちSHシミュレータ]  @cindex 日立SHシミュレータ[ひたちSHシミュレータ]
 日立(Hitachi)マイクロプロセッサをターゲットとしてデバッグするための  日立(Hitachi)マイクロプロセッサをターゲットとしてデバッグするための
 コンフィギュレーションが行われると、  コンフィギュレーションが行われると、
 @value{GDBN}には、  @value{GDBN}には、
 ターゲット・チップ  ターゲット・チップ
 (日立SH、H8/300、H8/500)  (日立SH、H8/300、H8/500)
 のCPUシミュレータが組み込まれます。  のCPUシミュレータが組み込まれます。
 @end ifset  @end ifset
   
 @ifset Z8K  @ifset Z8K
 @cindex simulator, Z8000  @cindex simulator, Z8000
 @cindex Zilog Z8000 simulator  @cindex Zilog Z8000 simulator
 @cindex シミュレータ、Z8000  @cindex シミュレータ、Z8000
 @cindex Zilog Z8000シミュレータ  @cindex Zilog Z8000シミュレータ
 Zilog Z8000をターゲットとしてデバッグするための  Zilog Z8000をターゲットとしてデバッグするための
 コンフィギュレーションが行われると、  コンフィギュレーションが行われると、
 @value{GDBN}には、  @value{GDBN}には、
 Z8000シミュレータが組み込まれます。  Z8000シミュレータが組み込まれます。
 @end ifset  @end ifset
 @end ifclear  @end ifclear
   
 @ifset Z8K  @ifset Z8K
 Z8000系については、  Z8000系については、
 @samp{target sim}によって、  @samp{target sim}によって、
 Z8002  Z8002
 (Z8000アーキテクチャの、  (Z8000アーキテクチャの、
 セグメントを持たない変種)  セグメントを持たない変種)
 またはZ8001  またはZ8001
 (セグメントを持つ変種)  (セグメントを持つ変種)
 をシミュレートします。  をシミュレートします。
 シミュレータは、  シミュレータは、
 オブジェクト・コードを調べることで、  オブジェクト・コードを調べることで、
 どちらのアーキテクチャが適切であるかを認識します。  どちらのアーキテクチャが適切であるかを認識します。
 @end ifset  @end ifset
   
 @table @code  @table @code
 @item target sim @var{args}  @item target sim @var{args}
 @kindex sim  @kindex sim
 @kindex target sim  @kindex target sim
 シミュレートされたCPU上でプログラムをデバッグします。  シミュレートされたCPU上でプログラムをデバッグします。
 シミュレータがセットアップ・オプションをサポートしている場合は、  シミュレータがセットアップ・オプションをサポートしている場合は、
 それを@var{args}の部分に指定します。  それを@var{args}の部分に指定します。
 @end table  @end table
   
 @noindent  @noindent
 このターゲットを指定した後には、  このターゲットを指定した後には、
 ホスト・コンピュータ上のプログラムをデバッグするのと同様の方法で、  ホスト・コンピュータ上のプログラムをデバッグするのと同様の方法で、
 シミュレートされたCPU用のプログラムをデバッグすることができます。  シミュレートされたCPU用のプログラムをデバッグすることができます。
 新しいプログラムのイメージをロードするには  新しいプログラムのイメージをロードするには
 @code{file}コマンドを使い、  @code{file}コマンドを使い、
 ユーザ・プログラムを実行するには@code{run}コマンドを使う、  ユーザ・プログラムを実行するには@code{run}コマンドを使う、
 という具合です。  という具合です。
   
 Z8000シミュレータでは、  Z8000シミュレータでは、
 通常のマシン・レジスタ  通常のマシン・レジスタ
 (@code{info reg} を参照)  (@code{info reg} を参照)
 がすべて利用可能であるだけでなく、  がすべて利用可能であるだけでなく、
 特別な名前を持つレジスタとして、  特別な名前を持つレジスタとして、
 3つの追加情報が提供されています。  3つの追加情報が提供されています。
   
 @table @code  @table @code
 @item cycles  @item cycles
 シミュレータ内のクロック・ティックをカウントします。  シミュレータ内のクロック・ティックをカウントします。
   
 @item insts  @item insts
 シミュレータ内で実行された命令をカウントします。  シミュレータ内で実行された命令をカウントします。
   
 @item time  @item time
 1/60秒を単位とする実行時間を示します。  1/60秒を単位とする実行時間を示します。
 @end table  @end table
   
 これらの変数は、  これらの変数は、
 @value{GDBN}の式の中で普通に参照することができます。  @value{GDBN}の式の中で普通に参照することができます。
 例えば、  例えば、
 @w{@samp{b fputc if $cycles>5000}}は、  @w{@samp{b fputc if $cycles>5000}}は、
 シミュレートされたクロック・ティックが最低5,000回発生した後に停止するような、  シミュレートされたクロック・ティックが最低5,000回発生した後に停止するような、
 条件付きブレイクポイントを設定します。  条件付きブレイクポイントを設定します。
 @end ifset  @end ifset
   
 @c need to add much more detail about sims!  @c need to add much more detail about sims!

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>