Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

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

書式

       gdbserver comm prog [args...]

       gdbserver --attach comm pid

       gdbserver --multi comm

説明

       gdbserver は、デバッグ対象のプログラムを実行しているマシンとは異なるマシン上で GDB を実行
       することを可能にするプログラムです。

       使用方法 (サーバー(ターゲット)側):

       まず、デバッグ対象のプログラムのコピーをターゲットシステムに用意します。 gdbserver は、 シ
       ンボルを関知しないので、 使用スペースを節約するためにプログラムからシンボルを取り除く
       (strip する) のでも構いません。 すべてのシンボルの処理は、ホストシステム上において動作する
       GDB が行います。

       サーバーを使用するためには、ターゲットシステムにログインし、gdbserver プログラムを実行しま
       す。 その際には (a) GDB との通信方法、 (b) プログラム名、 (c) プログラムへの引数 を指定す
       る必要があります。 一般的な書式は以下のようになります。

        target> gdbserver <comm> <program> [<args>
       ...]

       たとえば、シリアルポートを使用する場合は、以下のようになります。

        target> gdbserver /dev/com1 emacs foo.txt

       この例では、gdbserver に対して、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 はエラーメッセージを出力して終了します。

       gdbserver は、 実行中のプログラムに接続することができます。 これを行うには --attach 引数を
       使用します。 書式は次の通りです。

        target> gdbserver --attach <comm> <pid>

       pid は現在実行中のプロセスのプロセス ID です。 gdbserver に実行中のプロセスのバイナリを指
       定する必要はありません。

       初期起動するコマンド、 あるいはアタッチするプロセス ID を指定せずに "gdbserver" を起動する
       には、 コマンドラインオプション --multi を用います。 この場合は、 "target extended-remote"
       を利用して、デバッグしたいプログラムを起動して連携することが必要です。

        target> gdbserver --multi <comm>

       使用方法 (ホスト側):

       GDB がシンボルテーブルを検査したりするため、 ホストシステムには、 ターゲットプログラムのシ
       ンボルが取り除かれていない (strip されていない) コピーが必要です。 通常の場合同様、 最初の
       引数にターゲットプログラムを指定して GDB を起動します。 (シリアル回線のボーレート (baud
       rate) が 9600 以外の場合は、--baud オプションの指定が必要になります。) つまり、"gdb
       TARGET-PROG" あるいは "gdb --baud BAUD TARGET-PROG" のように起動します。 その後、新たに覚
       える必要のあるコマンドは、"target remote" (あるいは "target extended-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' というよ
       うなエラーになるでしょう。

       gdbserver では、 一度に複数の inferior オブジェクトをデバッグできます。 これについては GDB
       マニュアルの "Inferiors Connections and Programs" ノードにおいて説明しています。 -- シェル
       コマンドでは "info -f gdb -n 'Inferiors Connections and Programs'" とします。 この場合は、
       GDB コマンドの別の形である "extended-remote" GDB を実行します。

        (gdb) target extended-remote the-target:2345

       gdbserver オプションである --multi は、 この場合に使っても使わなくてもかまいません。

オプション

       gdbserver の起動方法には 3 つのモードがあります。

       •   プログラム名指定によるプログラムデバッグ:

            gdbserver <comm> <prog> [<args>...]

           パラメーター comm は、サーバーが GDB と通信するための方法を指定します。 その値は、デバ
           イス名 (シリアル回線利用時)、 TCP ポート番号 (":1234")、 "-" または "stdio"
           ("gdbserver" の標準入出力利用時) のいずれかです。 デバッグするプログラム名は prog に指
           定します。 残りの引数は、 そのままプログラムに受け渡されます。 プログラムが終了する
           と、 GDB が接続を閉じ、"gdbserver" は終了します。

       •   プログラム実行中のプロセス ID を指定したプログラムデバッグ:

            gdbserver --attach <comm> <pid>

           パラメーター comm については前述済です。 実行しているプログラムのプロセス ID を pid
           に指定します。 後は GDB がすべてを処理します。 前項目のモードと同じように、プロセス
           pid が終了すると、 GDB が接続を閉じ、 "gdbserver" は終了します。

       •   マルチプロセスモード -- 複数のプログラム/プロセスのデバッグ:

            gdbserver --multi <comm>

           このモードにおいては、 GDB が gdbserver に対して実行コマンドを指示します。 上のそれま
           での 2 つのモードとは違って、 デバッグされていたプロセスが終了しても、 GDB は接続を閉
           じません。 したがって同一セッション内において、 複数のプロセスをデバッグすることができ
           ます。

       いずれのモードにおいても、 以下のオプションが指定できます。

       --help
           短い説明つきで、 すべてのオプションを表示します。

       --version
           このオプションにより gdbserver はバージョン番号を表示して終了します。

       --attach
           gdbserver は実行中プログラムにアタッチします。 その文法は以下のとおりです。

            target> gdbserver --attach <comm> <pid>

           pid は現在実行中のプロセスのプロセス ID です。 gdbserver に実行中のプロセスのバイナリ
           を指定する必要はありません。

       --multi
           初期起動するコマンド、 あるいはアタッチするプロセス ID を指定せずに "gdbserver" を起動
           するには、 このコマンドラインオプションを用います。 そして "target extended-remote" を
           利用して、 デバッグしたいプログラムを起動します。 その文法は以下のとおりです。

            target> gdbserver --multi <comm>

       --debug
           "gdbserver" に対して、 デバッグ処理における追加ステータス情報を表示するように指示しま
           す。 このオプションは "gdbserver" 開発向けとして、 開発およびバグ報告に用いることを意
           図しています。

       --remote-debug
           "gdbserver" に対して、 リモートプロトコルによるデバッグ出力を行うことを指示します。 こ
           のオプションは "gdbserver" 開発向けとして、 開発およびバグ報告に用いることを意図してい
           ます。

       --debug-file=filename
           "gdbserver" に対して、デバッグ出力を指定した filename に書き出すことを指示します。 こ
           のオプションは "gdbserver" 開発向けとして、 開発およびバグ報告に用いることを意図してい
           ます。

       --debug-format=option1[,option2,...]
           "gdbserver" に対して、 デバッグ出力の各行に追加情報を含めることを指示します。

       --wrapper
           デバッグを行うために起動するプログラムのラッパーを指定します。 このオプションに続け
           て、 ラッパー名を指定することが必要です。 ラッパーに受け渡すコマンドライン引数があれ
           ば、続けて記述します。 "--" を記述して、 ラッパーへの引数の終わりを指示します。

       --once
           デフォルトで gdbserver は TCP ポートを開いたまま、 待ち続けます。 したがって追加で接続
           することが可能です。 ただし "gdbserver" に --once オプションをつけて実行すると、 最初
           の GDB セッションの接続を終えたら、 ポートの待ち受けを停止して、 それ以上の接続は行い
           ません。

関連項目

       GDB の完全なドキュメントは Texinfo マニュアルとしてメンテナンスされています。"info" と
       "gdb" の両プログラム、および GDB の Texinfo ドキュメントが適切にインストールされていれ
       ば、以下のコマンド

        info gdb

       を実行して完全なマニュアルを参照できます。

       Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H.
       Pesch, July 1991.

著作権

       Copyright (c) 1988-2022 Free Software Foundation, Inc.

       Permission is granted to copy, distribute and/or modify this document under the terms of
       the GNU Free Documentation License, Version 1.3 or any later version published by the Free
       Software Foundation; with the Invariant Sections being "Free Software" and "Free Software
       Needs Free Documentation", with the Front-Cover Texts being "A GNU Manual," and with the
       Back-Cover Texts as in (a) below.

       (a) FSF の裏表紙には、 以下の文章が記述されています: "You are free to copy and modify this
       GNU Manual.  Buying copies from GNU Press supports the FSF in developing GNU and promoting
       software freedom."