gdbserver

GNU デバッガ用リモートサーバ

gdbserver - GNU デバッガ用リモートサーバ
gdbserver
tty prog [ args... ] b
GDBSERVER は、デバッグ対象のプログラムを実行しているマシンとは異なる マシン上で GDB を実行することを可能にするプログラムです。
使用方法 (サーバ(ターゲット)側):
まず、デバッグ対象のプログラムのコピーをターゲットシステムに用意します。 GDBserver は、シンボルを関知しないので、使用スペースを節約するために プログラムをストリップしても構いません。全てのシンボルは、ホストシステムで 実行される GDB によって考慮されます。
サーバを使用するためには、ターゲットシステムにログインし、`gdbserver' プログラムを実行します。(a) GDB との通信方法、(b) プログラム名、 (c) プログラムへの引数 を指定する必要があります。一般的な書式は以下のように なります:
target> gdbserver COMM PROGRAM [ARGS ...]
例えば、シリアルポートを使用する場合は、以下のようになります。
target> gdbserver /dev/com1 emacs foo.txt
この例では、emacs を引数 foo.txt を用いてデバッグすることを指定し、 GDB との通信に /dev/com1 を使用します。gdbserver は、ホストの GDB が 通信して来ることを辛抱強く待ちます。
TCP 接続を使用する場合は、以下のようになります。
target> gdbserver host:2345 emacs foo.txt
この例では、ホストの GDB との通信に TCP を用いる以外は、前の例と同じです。 引数 `host:2345' は、`host' からの TCP 接続が ローカルの TCP ポート 2345 に接続されるのを待つ、という意味です。(現状では `host' 部は無視されます。) ターゲットシステムで存在する TCP ポートとの衝突が無ければ、ポート番号は 自由に選ぶことができます。ホストの GDB の `target remote' コマンドで、 同じポート番号を指定する必要があります。他のサービスと衝突するポート番号を 選んだ場合、gdbserver はエラーメッセージを出力して終了します。
使用方法 (ホスト側):
GDB がシンボルテーブルを検査したりするため、ホストシステムには、ターゲット プログラムのストリップされていないコピーが必要です。通常の場合同様、 最初の引数にターゲットプログラムを指定して GDB を起動します。(シリアルラインが 9600 baud 以外で動作している場合は、--baud オプションが必要です。) つまり、`gdb TARGET-PROG' あるいは、`gdb --baud BAUD TARGET-PROG' のように 起動します。その後、新たに覚える必要のあるコマンドは、`target remote' だけです。 コマンドの引数は、デバイス名(通常、`/dev/ttyb' のようなシリアルデバイス)か、 HOST:PORT 記述子です。例えば、
(gdb) target remote /dev/ttyb
は、シリアルライン /dev/ttyb を使用してサーバと通信します。また、
(gdb) target remote the-target:2345
は、TCP 接続で、ホスト `the-target' の gdbserver を起動した時に指定した ポートと同じポート 2345 を使用してサーバと通信します。TCP 接続の場合、 `target remote' コマンドを実行する前に gdbserver を実行しておく必要があります。 そうしないと、`Connection refused' というようなエラーになるでしょう。
デバッグの対象となるプログラムの名前と、通信に使用する tty を指定する 必要があります。他の全てのことはリモートの GDB が行います。 その他の引数は、そのままプログラムに渡されます。
` gdb ' entry in info\c ; Using GDB: A Guide to the GNU Source-Level Debugger\c , Richard M. Stallman and Roland H. Pesch, July 1991.
Copyright (c) 1993 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.