次: , 上: Remote


13.4.1 GDBリモート・シリアル・プロトコル

他のマシン上で実行中のプログラムをデバッグするには (ターゲット・マシンをデバッグするには)、 そのプログラムを単独で実行するために通常必要となる事前条件をすべて整える必要があります。 例えば、 Cのプログラムの場合、

  1. Cの実行環境をセットアップするためのスタートアップ・ルーチンが必要です。 これは通常crt0のような名前を持っています。 スタートアップ・ルーチンは、 ハードウェアの供給元から提供されることもありますし、 ユーザが自分で書かなければならないこともあります。
  2. ユーザ・プログラムからのサブルーチン呼び出しをサポートするために、 入出力の管理などを行うCのサブルーチン・ライブラリが必要になるかもしれません。
  3. ユーザ・プログラムを他のマシンに持っていく手段、 例えばダウンロード・プログラムが必要です。 これはハードウェアの供給元から提供されることが多いのですが、 ハードウェアのドキュメントをもとにユーザが自分で作成しなければならないこともあります。

次に、ユーザ・プログラムがシリアル・ポートを使って、GDBを実行中のマシン (ホスト・マシン) と通信できるように準備します。 一般的には、以下のような形になります。

ホスト上では:
GDBは既にこのプロトコルの使い方を理解しています。 他の設定がすべて終了した後、 単に`target remote'コマンドを使用するだけです (see Specifying a Debugging Target)。
ターゲット上では:
ユーザ・プログラムに、 GDBリモート・シリアル・プロトコルを実装した特別なサブルーチンを いくつかリンクする必要があります。 これらのサブルーチンを含むファイルは、 デバッグ・スタブと呼ばれます。

特定のリモート・ターゲットでは、 ユーザ・プログラムにスタブをリンクする代わりに、 gdbserverという補助プログラムを使うこともできます。 詳細については、 See Using the gdbserver program

デバッグ・スタブはリモート・マシンのアーキテクチャに固有のものです。 例えば、 sparcボード上のプログラムをデバッグするにはsparc-stub.cを使います。

以下に実際に使えるスタブを列挙します。 これらは、 GDBとともに配布されています。

i386-stub.c
Intel 386アーキテクチャ、 およびその互換アーキテクチャ用です。
m68k-stub.c
Motorola 680x0アーキテクチャ用です。
sh-stub.c
日立SHアーキテクチャ用です。
sparc-stub.c
sparcアーキテクチャ用です。
sparcl-stub.c
富士通sparcliteアーキテクチャ用です。

GDBとともに配布されるREADMEファイルには、 新しく追加された他のスタブのことが記されているかもしれません。