.de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" fudge factors for nroff and troff . .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} .\" simple accents for nroff and troff . .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} .\" troff and (daisy-wheel) nroff accents . .ds : \k:\h'-(\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \k:\h'-(\n(.wu+\w'\(de'u\-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\fI\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E .\" corrections for vroff . .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' .\" for low resolution devices (crt and lpr) . .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "GDBSERVER 1" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" translated for 11.2 ribbon .\" .TH GDBSERVER 1 2022\-01\-16 gdb\-11.2 "GNU Development Tools" .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH 名前 gdbserver \- GNU デバッガー用リモートサーバー .SH 書式 .IX Header 書式 gdbserver \fIcomm\fP \fIprog\fP [\fIargs\fP...] .PP gdbserver \-\-attach \fIcomm\fP \fIpid\fP .PP gdbserver \-\-multi \fIcomm\fP .SH 説明 .IX Header 説明 \&\fBgdbserver\fP は、デバッグ対象のプログラムを実行しているマシンとは異なるマシン上で \s-1GDB\s0 を実行することを可能にするプログラムです。 .PP 使用方法 (サーバー(ターゲット)側): .PP まず、デバッグ対象のプログラムのコピーをターゲットシステムに用意します。 \&\fBgdbserver\fP は、 シンボルを関知しないので、 使用スペースを節約するためにプログラムからシンボルを取り除く (strip する) のでも構いません。 すべてのシンボルの処理は、ホストシステム上において動作する \s-1GDB\s0 が行います。 .PP サーバーを使用するためには、ターゲットシステムにログインし、\fBgdbserver\fP プログラムを実行します。 その際には (a) \s-1GDB\s0 との通信方法、 (b) プログラム名、 (c) プログラムへの引数 を指定する必要があります。 一般的な書式は以下のようになります。 .PP .Vb 1 \& target> gdbserver [ \&...] .Ve .PP たとえば、シリアルポートを使用する場合は、以下のようになります。 .PP .Vb 1 \& target> gdbserver /dev/com1 emacs foo.txt .Ve .PP この例では、\fBgdbserver\fP に対して、emacs に引数 foo.txt を与えてデバッグすることを指定しています。 そして \s-1GDB\s0 との通信に \fI/dev/com1\fP を使用します。 \fBgdbserver\fP は、ホストの \s-1GDB\s0 が通信して来ることを辛抱強く待ちます。 .PP \s-1TCP\s0 接続を使用する場合は、以下のようになります。 .PP .Vb 1 \& target> gdbserver host:2345 emacs foo.txt .Ve .PP この例では、ホストの GDB との通信に TCP を用いる以外は、前の例と同じです。 引数 \f(CW\*(C`host:2345\*(C'\fP は、\f(CW\*(C`host\*(C'\fP からの \s-1TCP\s0 接続が ローカルの \s-1TCP\s0 ポート 2345 に接続されるのを待つ、という意味です。 (現状では \f(CW\*(C`host\*(C'\fP 部は無視されます。) ターゲットシステムで存在する \s-1TCP\s0 ポートとの衝突が無ければ、ポート番号は自由に選ぶことができます。 ホストの GDB の \f(CW\*(C`target remote\*(C'\fP コマンドで、 同じポート番号を指定する必要があります。 他のサービスと衝突するポート番号を 選んだ場合、 \fBgdbserver\fP はエラーメッセージを出力して終了します。 .PP \&\fBgdbserver\fP は、 実行中のプログラムに接続することができます。 これを行うには \fB\-\-attach\fP 引数を使用します。 書式は次の通りです。 .PP .Vb 1 \& target> gdbserver \-\-attach .Ve .PP \&\fIpid\fP は現在実行中のプロセスのプロセス \s-1ID\s0 です。 \fBgdbserver\fP に実行中のプロセスのバイナリを指定する必要はありません。 .PP 初期起動するコマンド、 あるいはアタッチするプロセス \s-1ID\s0 を指定せずに \f(CW\*(C`gdbserver\*(C'\fP を起動するには、 コマンドラインオプション \fB\-\-multi\fP を用います。 この場合は、 \f(CW\*(C`target extended\-remote\*(C'\fP を利用して、デバッグしたいプログラムを起動して連携することが必要です。 .PP .Vb 1 \& target> gdbserver \-\-multi .Ve .PP 使用方法 (ホスト側): .PP \&\s-1GDB\s0 がシンボルテーブルを検査したりするため、 ホストシステムには、 ターゲットプログラムのシンボルが取り除かれていない (strip されていない) コピーが必要です。 通常の場合同様、 最初の引数にターゲットプログラムを指定して GDB を起動します。 (シリアル回線のボーレート (baud rate) が 9600 以外の場合は、\&\fB\-\-baud\fP オプションの指定が必要になります。) つまり、\f(CW\*(C`gdb TARGET\-PROG\*(C'\fP あるいは \f(CW\*(C`gdb \-\-baud BAUD TARGET\-PROG\*(C'\fP のように起動します。 その後、新たに覚える必要のあるコマンドは、\f(CW\*(C`target remote\*(C'\fP (あるいは \f(CW\*(C`target extended\-remote\*(C'\fP) だけです。 コマンドの引数は、デバイス名 (通常 \fI/dev/ttyb\fP のようなシリアルデバイス) か、 \f(CW\*(C`HOST:PORT\*(C'\fP 記述子です。 たとえば、 .PP .Vb 1 \& (gdb) target remote /dev/ttyb .Ve .PP は、シリアル回線 \fI/dev/ttyb\fP を使用してサーバーと通信します。また、 .PP .Vb 1 \& (gdb) target remote the\-target:2345 .Ve .PP は、\s-1TCP\s0 接続で、ホスト `the\-target' の \fBgdbserver\fP を起動した時に指定したポートと同じポート 2345 を使用してサーバーと通信します。 \&\s-1TCP\s0 接続の場合、 `target remote' コマンドを実行する前に \fBgdbserver\fP を実行しておく必要があります。 そうしないと、`Connection refused' というようなエラーになるでしょう。 .PP \&\fBgdbserver\fP では、 一度に複数の inferior オブジェクトをデバッグできます。 これについては \s-1GDB\s0 マニュアルの \f(CW\*(C`Inferiors Connections and Programs\*(C'\fP ノードにおいて説明しています。 \&\*(-- シェルコマンドでは \f(CW\*(C`info \-f gdb \-n \*(AqInferiors Connections and Programs\*(Aq\*(C'\fP とします。 この場合は、 \s-1GDB\s0 コマンドの別の形である \f(CW\*(C`extended\-remote\*(C'\fP \s-1GDB\s0 を実行します。 .PP .Vb 1 \& (gdb) target extended\-remote the\-target:2345 .Ve .PP \fBgdbserver\fP オプションである \fB\-\-multi\fP は、 この場合に使っても使わなくてもかまいません。 .SH オプション .IX Header オプション \fBgdbserver\fP の起動方法には 3 つのモードがあります。 .IP \(bu 4 プログラム名指定によるプログラムデバッグ: .Sp .Vb 1 \& gdbserver [...] .Ve .Sp パラメーター \fIcomm\fP は、サーバーが \s-1GDB\s0 と通信するための方法を指定します。 その値は、デバイス名 (シリアル回線利用時)、 \s-1TCP\s0 ポート番号 (\f(CW\*(C`:1234\*(C'\fP)、 \f(CW\*(C`\-\*(C'\fP または \f(CW\*(C`stdio\*(C'\fP (\f(CW\*(C`gdbserver\*(C'\fP の標準入出力利用時) のいずれかです。 デバッグするプログラム名は \fIprog\fP に指定します。 残りの引数は、 そのままプログラムに受け渡されます。 プログラムが終了すると、 \s-1GDB\s0 が接続を閉じ、\f(CW\*(C`gdbserver\*(C'\fP は終了します。 .IP \(bu 4 プログラム実行中のプロセス \s-1ID\s0 を指定したプログラムデバッグ: .Sp .Vb 1 \& gdbserver \-\-attach .Ve .Sp パラメーター \fIcomm\fP については前述済です。 実行しているプログラムのプロセス \s-1ID\s0 を \fIpid\fP に指定します。 後は \s-1GDB\s0 がすべてを処理します。 前項目のモードと同じように、プロセス \fIpid\fP が終了すると、 \&\s-1GDB\s0 が接続を閉じ、 \f(CW\*(C`gdbserver\*(C'\fP は終了します。 .IP \(bu 4 マルチプロセスモード \*(-- 複数のプログラム/プロセスのデバッグ: .Sp .Vb 1 \& gdbserver \-\-multi .Ve .Sp このモードにおいては、 \s-1GDB\s0 が \fBgdbserver\fP に対して実行コマンドを指示します。 上のそれまでの 2 つのモードとは違って、 デバッグされていたプロセスが終了しても、 \s-1GDB\s0 は接続を閉じません。 したがって同一セッション内において、 複数のプロセスをデバッグすることができます。 .PP いずれのモードにおいても、 以下のオプションが指定できます。 .IP \fB\-\-help\fP 4 .IX Item \-\-help 短い説明つきで、 すべてのオプションを表示します。 .IP \fB\-\-version\fP 4 .IX Item \-\-version このオプションにより \fBgdbserver\fP はバージョン番号を表示して終了します。 .IP \fB\-\-attach\fP 4 .IX Item \-\-attach \&\fBgdbserver\fP は実行中プログラムにアタッチします。 その文法は以下のとおりです。 .Sp .Vb 1 \& target> gdbserver \-\-attach .Ve .Sp \&\fIpid\fP は現在実行中のプロセスのプロセス \s-1ID\s0 です。 \fBgdbserver\fP に実行中のプロセスのバイナリを指定する必要はありません。 .IP \fB\-\-multi\fP 4 .IX Item \-\-multi 初期起動するコマンド、 あるいはアタッチするプロセス \s-1ID\s0 を指定せずに \f(CW\*(C`gdbserver\*(C'\fP を起動するには、 このコマンドラインオプションを用います。 そして \f(CW\*(C`target extended\-remote\*(C'\fP を利用して、 デバッグしたいプログラムを起動します。 その文法は以下のとおりです。 .Sp .Vb 1 \& target> gdbserver \-\-multi .Ve .IP \fB\-\-debug\fP 4 .IX Item \-\-debug \f(CW\*(C`gdbserver\*(C'\fP に対して、 デバッグ処理における追加ステータス情報を表示するように指示します。 このオプションは \f(CW\*(C`gdbserver\*(C'\fP 開発向けとして、 開発およびバグ報告に用いることを意図しています。 .IP \fB\-\-remote\-debug\fP 4 .IX Item \-\-remote\-debug \f(CW\*(C`gdbserver\*(C'\fP に対して、 リモートプロトコルによるデバッグ出力を行うことを指示します。 このオプションは \f(CW\*(C`gdbserver\*(C'\fP 開発向けとして、 開発およびバグ報告に用いることを意図しています。 .IP \fB\-\-debug\-file=\fP\fIfilename\fP 4 .IX Item \-\-debug\-file=filename \f(CW\*(C`gdbserver\*(C'\fP に対して、デバッグ出力を指定した \fIfilename\fP に書き出すことを指示します。 このオプションは \f(CW\*(C`gdbserver\*(C'\fP 開発向けとして、 開発およびバグ報告に用いることを意図しています。 .IP \fB\-\-debug\-format=option1\fP[\fB,option2,...\fP] 4 .IX Item \-\-debug\-format=option1[,option2,...] \f(CW\*(C`gdbserver\*(C'\fP に対して、 デバッグ出力の各行に追加情報を含めることを指示します。 .IP \fB\-\-wrapper\fP 4 .IX Item \-\-wrapper デバッグを行うために起動するプログラムのラッパーを指定します。 このオプションに続けて、 ラッパー名を指定することが必要です。 ラッパーに受け渡すコマンドライン引数があれば、続けて記述します。 \&\f(CW\*(C`\-\-\*(C'\fP を記述して、 ラッパーへの引数の終わりを指示します。 .IP \fB\-\-once\fP 4 .IX Item \-\-once デフォルトで \fBgdbserver\fP は \s-1TCP\s0 ポートを開いたまま、 待ち続けます。 したがって追加で接続することが可能です。 ただし \f(CW\*(C`gdbserver\*(C'\fP に \fB\-\-once\fP オプションをつけて実行すると、 最初の \s-1GDB\s0 セッションの接続を終えたら、 ポートの待ち受けを停止して、 それ以上の接続は行いません。 .SH 関連項目 .IX Header 関連項目 \s-1GDB\s0 の完全なドキュメントは Texinfo マニュアルとしてメンテナンスされています。\f(CW\*(C`info\*(C'\fP と \f(CW\*(C`gdb\*(C'\fP の両プログラム、および \s-1GDB\s0 の Texinfo ドキュメントが適切にインストールされていれば、以下のコマンド .PP .Vb 1 \& info gdb .Ve .PP を実行して完全なマニュアルを参照できます。 .PP \&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source\-Level Debugger\fP, Richard M. Stallman and Roland H. Pesch, July 1991. .SH 著作権 .IX Header 著作権 Copyright (c) 1988\-2022 Free Software Foundation, Inc. .PP Permission is granted to copy, distribute and/or modify this document under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being \*(L"Free Software\*(R" and \*(L"Free Software Needs Free Documentation\*(R", with the Front\-Cover Texts being \*(L"A \s-1GNU\s0 Manual,\*(R" and with the Back\-Cover Texts as in (a) below. .PP (a) \s-1FSF\s0 の裏表紙には、 以下の文章が記述されています: \*(L"You are free to copy and modify this \s-1GNU\s0 Manual. Buying copies from \s-1GNU\s0 Press supports the \s-1FSF\s0 in developing \s-1GNU\s0 and promoting software freedom.\*(R"