jdk/src/solaris/doc/sun/man/man1/ja/jdb.1
changeset 2 90ce3da70b43
child 2692 345bc8d65b19
equal deleted inserted replaced
0:fd16c54261b3 2:90ce3da70b43
       
     1 '\" t
       
     2 .\" Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
       
     3 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4 .\"
       
     5 .\" This code is free software; you can redistribute it and/or modify it
       
     6 .\" under the terms of the GNU General Public License version 2 only, as
       
     7 .\" published by the Free Software Foundation.
       
     8 .\"
       
     9 .\" This code is distributed in the hope that it will be useful, but WITHOUT
       
    10 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11 .\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12 .\" version 2 for more details (a copy is included in the LICENSE file that
       
    13 .\" accompanied this code).
       
    14 .\"
       
    15 .\" You should have received a copy of the GNU General Public License version
       
    16 .\" 2 along with this work; if not, write to the Free Software Foundation,
       
    17 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18 .\"
       
    19 .\" Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    20 .\" CA 95054 USA or visit www.sun.com if you need additional information or
       
    21 .\" have any questions.
       
    22 .\" ` 
       
    23 .\" 
       
    24 .\"  This document was created by saving an HTML file as text
       
    25 .\"  from the JavaSoft web site:
       
    26 .\" 
       
    27 .\" http://java.sun.com/j2se/1.4/docs/tooldocs/tools.html
       
    28 .\" 
       
    29 .\"  and adding appropriate troff macros.  Because the JavaSoft web site 
       
    30 .\"  man pages can change without notice, it may be helpful to diff
       
    31 .\"  files to identify changes other than new functionality. 
       
    32 .\" 
       
    33 .TH jdb 1 "2006 年 9 月 4 日" "Java SE 6" "ユーザーコマンド"
       
    34 .SH "名前"
       
    35 jdb \- Java デバッガ
       
    36 .LP
       
    37 
       
    38 .LP
       
    39 .LP
       
    40 \f3jdb\fP は、Java 言語プログラムのバグを見つけて修正するために使用するツールです。
       
    41 .LP
       
    42 .SH "形式"
       
    43 .B jdb 
       
    44 [ 
       
    45 .I options
       
    46 ] [
       
    47 .I class
       
    48 ] [
       
    49 .I  arguments
       
    50 ]
       
    51 .LP
       
    52 .TP 15
       
    53 .I options
       
    54 以下に指定するコマンド行オプション
       
    55 .TP
       
    56 .I class
       
    57 デバッグを開始するクラス名
       
    58 .TP
       
    59 .I arguments
       
    60 クラスの
       
    61 .B main(\|)
       
    62 メソッドに渡される引数
       
    63 .SH "機能説明"
       
    64 .IX "Java debugger" "" "Java debugger \(em \fLjdb\fP"
       
    65 .IX "jdb" "" "\fLjdb\fP \(em Java debugger"
       
    66 Java デバッガの
       
    67 .BR jdb
       
    68 は、
       
    69 Java
       
    70 クラス用の単純なコマンド行デバッガです。
       
    71 .na
       
    72 「\f2Java Platform Debugger Architecture\fP」
       
    73 .fi
       
    74  (http://java.sun.com/javase/6/docs/technotes/guides/jpda/index.html) 
       
    75 を画面に表示しながら実行し、ローカルまたはリモートの Java 仮想マシン
       
    76 の検査とデバッグを行うことができます。
       
    77 .SS "jdb セッションの開始"
       
    78 .IX "jdb" "Starting a jdb Session" "\fLjdb\fP \(em Java debugger"
       
    79 jdb セッションを開始するにはさまざまな方法があります。 もっとも頻繁に使
       
    80 われるのは、アプリケーションのメインクラスをデバッグして、
       
    81 .B jdb
       
    82 から新しく Java 仮想マシン (VM) を起動する方法です。 コマンド行で、
       
    83 .BR java (1)
       
    84 の代わりに
       
    85 .B jdb
       
    86 コマンドを入力します。たとえば、アプリケーションのメインクラスが
       
    87 .BR MyClass
       
    88 の場合は、次のコマンドを使用して jdb 環境でデバッグします。
       
    89 .LP
       
    90 .RS
       
    91 .B % jdb MyClass
       
    92 .RE
       
    93 .LP
       
    94 このようにして起動すると、
       
    95 .B jdb
       
    96 は 2 つ目の Java VM を呼び出し、指定されたパラメータを渡し、
       
    97 指定されたクラスをロードします。そのあと、
       
    98 クラスの最初の命令を実行する前に VM を停止させます。
       
    99 .LP
       
   100 .B jdb
       
   101 のもう 1 つの使用方法は、すでに起動している Java VM に
       
   102 .B jdb
       
   103 を接続することです。
       
   104 jdb が接続する VM を、その実行中に起動するための構文を次に示します。 これは、インプロセスデバッグ用ライブラリをロードし、接続の種類を指定します。
       
   105 .LP
       
   106 .nf
       
   107 \f3
       
   108 .fl
       
   109 \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n
       
   110 .fl
       
   111 \fP
       
   112 .fi
       
   113 
       
   114 .LP
       
   115 .LP
       
   116 たとえば、次のコマンドは
       
   117 .B MyClass
       
   118 アプリケーションを実行し、後で
       
   119 .B jdb 
       
   120 を接続できるようにします。
       
   121 .LP
       
   122 .nf
       
   123 \f3
       
   124 .fl
       
   125  % java \-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n MyClass
       
   126 .fl
       
   127 \fP
       
   128 .fi
       
   129 
       
   130 .LP
       
   131 .LP
       
   132 次のコマンドで
       
   133 .B jdb 
       
   134 を VM に接続できます。
       
   135 .LP
       
   136 .RS
       
   137 .B % jdb \-attach 8000
       
   138 .RE
       
   139 .LP
       
   140 このとき、
       
   141 .B jdb
       
   142 は新しい VM を起動するのではなく、既存の VM に接続するので、
       
   143 .B jdb 
       
   144 コマンド行で
       
   145 .B MyClass
       
   146 を指定しないことに注意してください。
       
   147 .LP
       
   148 これ以外にもデバッガ (jdb) を VM に接続する方法はたくさんあり、
       
   149 .BR jdb
       
   150 はそのすべての方法をサポートしています。
       
   151 このような接続オプションについては、
       
   152 .fi
       
   153 http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.html
       
   154 で Java Platform Debugger Architecture のマニュアルを参照してください。
       
   155 \f3jdb\fP で使用するために J2SE 1.4.2 以前の VM を起動する方法については、
       
   156 .fi
       
   157 http://java.sun.com/j2se/1.4.2/docs/technotes/guides/jpda/conninv.html
       
   158 の 1.4.2 のドキュメントを参照してください。
       
   159 .SS " jdb 基本コマンド"
       
   160 .IX "jdb" "Basic jdb Commands" "\fLjdb\fP \(em Java debugger"
       
   161 以下に
       
   162 .B jdb
       
   163 基本コマンドの一覧を示します。
       
   164 Java
       
   165 デバッガで使用可能なその他のコマンドは、
       
   166 .B help
       
   167 コマンドで表示できます。
       
   168 .TP 15
       
   169 .B help または ?
       
   170 .BR jdb
       
   171 のコマンドの中でもっとも重要なのが、この
       
   172 .B help
       
   173 コマンドです。利用可能なコマンドの一覧を、
       
   174 各コマンドの簡単な説明つきで表示します。
       
   175 .TP 15
       
   176 .B run
       
   177 .BR jdb
       
   178 を起動して必要なブレークポイントを設定したあとに、このコマンドを使用して、
       
   179 デバッグするアプリケーションの実行を開始します。このコマンドは、
       
   180 デバッグするアプリケーションを
       
   181 .B jdb
       
   182 から起動するときにだけ使用できます。 
       
   183 既存の VM に接続する場合とは異なります。
       
   184 .TP
       
   185 .B cont
       
   186 ブレークポイント、例外、またはステップ実行のあとで、デバッグ中の
       
   187 アプリケーションの実行を継続します。
       
   188 .TP 15
       
   189 .B print
       
   190 Java オブジェクトおよびプリミティブ値を表示します。 プリミティブ型の変数
       
   191 またはフィールドの場合には、実際の値を出力します。 オブジェクトの場合
       
   192 には、短い説明を出力します。 オブジェクトについては、以降の
       
   193 .B dump
       
   194 コマンドの説明を参照してください。 
       
   195 .sp 1n
       
   196 .LP
       
   197 注: 局所
       
   198 (スタック)
       
   199 変数をブラウズするには、そのクラスが
       
   200 .B javac \-g
       
   201 オプションでコンパイルされている必要があります。
       
   202 .sp 1n
       
   203 .LP
       
   204 .B print
       
   205 は、メソッドの呼び出しを含む多数の簡単な Java 式をサポートします。
       
   206 次に例を示します。 
       
   207 .RS
       
   208 .TP 3
       
   209 \(bu
       
   210 .B print MyClass.myStaticField 
       
   211 .PD 0
       
   212 .TP
       
   213 \(bu
       
   214 .B print myObj.myInstanceField 
       
   215 .TP
       
   216 \(bu
       
   217 \f3print\f1 \f2i\f1 \f3+\f1 \f2j\f1 \f3+\f1 \f2k\f1 (
       
   218 .IR i、
       
   219 .IR j 、
       
   220 および 
       
   221 .I k
       
   222 はプリミティブであり、フィールドまたは局所変数のいずれか) 
       
   223 .TP
       
   224 \(bu
       
   225 \f3print myObj.myMethod(\|)\f1 (
       
   226 .B myMethod
       
   227 が null 以外を返す場合) 
       
   228 .TP
       
   229 \(bu
       
   230 .B print new java.lang.String("Hello").length(\|)
       
   231 .RE
       
   232 .PD
       
   233 .TP
       
   234 .B dump
       
   235 プリミティブ値の場合には、このコマンドは
       
   236 .BR print
       
   237 と同じです。オブジェクトの場合には、オブジェクト内に定義されている
       
   238 各フィールドの現在の値を出力します。 static フィールドと instance
       
   239 フィールドを出力します。 
       
   240 .sp 1n
       
   241 .LP
       
   242 .B dump
       
   243 コマンドは、
       
   244 .B print
       
   245 コマンドと同じ式をサポートします。 
       
   246 .TP
       
   247 .B threads
       
   248 現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、
       
   249 およびほかのコマンドに使用できるインデックスを出力します。次に例を
       
   250 示します。 
       
   251 .sp 1n
       
   252 .RS 20
       
   253 .LP
       
   254 .B 4. (java.lang.Thread)0x1 main      running
       
   255 .RE
       
   256 .RS 
       
   257 .sp 1n
       
   258 .LP
       
   259 この例では、スレッドインデックスは
       
   260 .BR 4
       
   261 であり、スレッドは
       
   262 .BR java.lang.Thread 
       
   263 のインスタンスです。スレッドの名前は「
       
   264 .BR main
       
   265 」であり、現在実行中です。 
       
   266 .RE
       
   267 .TP 15
       
   268 .B thread
       
   269 現在のスレッドを選択します。 多くの
       
   270 .B jdb
       
   271 コマンドは、現在のスレッドの設定に基づいて実行されます。 スレッドは、
       
   272 .B threads 
       
   273 コマンドで説明するスレッドインデックスとともに指定します。 
       
   274 .TP 15
       
   275 .B where
       
   276 引数のない
       
   277 .B where
       
   278 コマンドは、現在のスレッド
       
   279 (
       
   280 .B thread
       
   281 コマンドで設定)
       
   282 のスタックをダンプします。
       
   283 .B where all
       
   284 と指定すると、現在のスレッドグループにある全スレッドの
       
   285 スタックをダンプします。
       
   286 .BI where " threadindex"
       
   287 と指定すると、
       
   288 .I threadindex
       
   289 が示すスレッドのスタックだけをダンプします。
       
   290 .sp 1n
       
   291 .LP
       
   292 現在のスレッドが (ブレークポイントなどのイベントや
       
   293 .B suspend
       
   294 コマンドで) 中断している場合、
       
   295 .B print 
       
   296 コマンドや
       
   297 .B dump
       
   298 コマンドを使用すれば、局所変数やフィールドを表示できます。
       
   299 どのスタックフレームを現在のフレームにするかは、
       
   300 .B up
       
   301 および
       
   302 .B down
       
   303 コマンドで選択できます。
       
   304 .SS "ブレークポイント用コマンド"
       
   305 .IX "jdb" "Breakpoints" "\fLjdb\fP \(em Java debugger"
       
   306 .B jdb
       
   307 では、ブレークポイントを行番号で、
       
   308 またはメソッドの最初の命令で
       
   309 設定できます。次に例を示します。
       
   310 .TP 25
       
   311 .B stop at MyClass:22
       
   312 .BR MyClass
       
   313 が含まれるソースファイルの
       
   314 .B 22
       
   315 行目の最初の命令にブレークポイントを設定する
       
   316 .TP
       
   317 .B stop in java.lang.String.length
       
   318 .BR java.lang.String.length
       
   319 メソッドの最初にブレークポイントを設定する
       
   320 .TP
       
   321 .BI "stop in MyClass." init
       
   322 .I init
       
   323
       
   324 .B MyClass
       
   325 コンストラクタを識別する
       
   326 .TP
       
   327 .BI "stop in MyClass." clinit
       
   328 .I clinit
       
   329
       
   330 .BR MyClass
       
   331 の静的な初期化コードを識別する 
       
   332 .LP
       
   333 メソッドがオーバーロードされる場合には、メソッドの引数の型も指定して、
       
   334 ブレークポイントに対して適切なメソッドが選択されるようにしなければなりませ
       
   335 ん。 たとえば、次のように指定します。
       
   336 .LP
       
   337 .RS 15
       
   338 .B MyClass.myMethod(int,java.lang.String)
       
   339 .RE
       
   340 .LP
       
   341 または
       
   342 .LP
       
   343 .RS 15
       
   344 .B MyClass.myMethod() 
       
   345 .RE
       
   346 .LP
       
   347 .B clear
       
   348 コマンドは、「
       
   349 .BR clear MyClass:45
       
   350 」のような構文を使用してブレークポイントを削除します。
       
   351 引数を指定しないで
       
   352 .B clear
       
   353 コマンドを使用すると、現在設定されてい
       
   354 るすべてのブレークポイントが表示されます。
       
   355 .B cont
       
   356 コマンドで実行が継続します。 
       
   357 .SS "コマンドのステップ実行"
       
   358 .IX "jdb" "Stepping" "\fLjdb\fP \(em Java debugger"
       
   359 .B step
       
   360 コマンドは、現在のスタックフレームまたは呼び出されたメソッド内で、
       
   361 次の行を実行します。 
       
   362 .B next
       
   363 コマンドは、現在のスタックフレームの次の行を
       
   364 実行します。 
       
   365 .SS "例外処理用コマンド"
       
   366 .IX "jdb" "Exceptions" "\fLjdb\fP \(em Java debugger"
       
   367 スローしているスレッドの呼び出しスタック上のどこにも catch 文がないような
       
   368 例外が発生すると、VM は通常、例外トレースを出力して終了します。 ただし、
       
   369 .BR jdb 
       
   370 環境で実行している場合は、このような例外が発生すると
       
   371 .B jdb
       
   372 に制御が戻ります。 次に、
       
   373 .BR jdb 
       
   374 を使用して例外の原因を診断します。 
       
   375 .TP 15
       
   376 .B catch
       
   377 デバッグ中のアプリケーションは他の例外がスローされたところで停止します。
       
   378 次に例を示します。
       
   379 .LP
       
   380 .RS 20
       
   381 .B catch java.io.FileNotFoundException
       
   382 .RE
       
   383 .sp 1n
       
   384 .RS 15
       
   385 または
       
   386 .RE
       
   387 .LP
       
   388 .RS 20
       
   389 .B catch mypackage.BigTroubleException
       
   390 .RE
       
   391 .sp 1n
       
   392 .RS 15
       
   393 例外が指定したクラス (または、サブクラス) のインスタンスである場合、
       
   394 アプリケーションはスローされたところで停止します。
       
   395 .RE
       
   396 .TP 15
       
   397 .B ignore
       
   398 以前の
       
   399 .B catch
       
   400 コマンドの効果を無効にします。なお、この指定によって例外を無視するのは
       
   401 デバッガだけであり、デバッグされた VM は無視しません。
       
   402 .SH "コマンド行オプション"
       
   403 コマンド行で Java アプリケーション起動ツールの代わりに
       
   404 .B jdb
       
   405 を使用する場合、
       
   406 .B jdb
       
   407 は、
       
   408 .BR \-D、
       
   409 .BR \-classpath、
       
   410 .BI \-X option\f1
       
   411 など、
       
   412 .BR java (1)
       
   413 コマンドと同じオプションを多数使用できます。
       
   414 .LP
       
   415 .B jdb 
       
   416 は、そのほかに次のオプションも使用できます。 
       
   417 .TP 3
       
   418 .BI \-help 
       
   419 ヘルプメッセージを表示します。
       
   420 .TP 3
       
   421 .BI \-sourcepath " dir1\f1:\f2dir2\f1:..."
       
   422 指定されたパスで、ソースファイルを検索します。 このオプションが
       
   423 指定されていない場合は、デフォルトパスの「.」を検索します。 
       
   424 .TP
       
   425 .BI \-attach " address"
       
   426 デフォルトの接続機構を使用して、すでに実行中の VM にデバッガを接続
       
   427 します。 
       
   428 .TP
       
   429 .BI \-listen " address"
       
   430 実行中の VM が標準のコネクタを使って指定されたアドレスに接続するのを待機します。
       
   431 .TP
       
   432 .BI \-listenany
       
   433 実行中の VM が標準のコネクタを使って利用可能な任意のアドレスに接続するのを待機します。
       
   434 .TP
       
   435 .B \-launch
       
   436 デバッグするアプリケーションを
       
   437 .BR jdb
       
   438 の起動後ただちに起動します。 このオプションを使用すると、
       
   439 .B run
       
   440 コマンドを使用する必要はありません。 デバッグするアプリケーションは、
       
   441 起動後、最初のアプリケーションクラスがロードされる直前に停止します。
       
   442 その時点で、必要なブレークポイントを設定できます。
       
   443 実行を継続するには
       
   444 .B cont
       
   445 コマンドを使用します。
       
   446 .TP 3
       
   447 \-listconnectors 
       
   448 この VM で利用できるコネクタを一覧表示します。
       
   449 .TP 3
       
   450 \-connect
       
   451 <connector\-name>:<name1>=<value1>,... 
       
   452 一覧表示された引数の値と指定のコネクタを使ってターゲット VM に接続します。
       
   453 .TP 3
       
   454 \-dbgtrace [flags] 
       
   455 jdb のデバッグ情報を出力します。
       
   456 .TP 3
       
   457 \-tclient 
       
   458 Java HotSpot(tm) VM (クライアント) 内でアプリケーションを実行します。
       
   459 .TP 3
       
   460 \-tserver 
       
   461 Java HotSpot(tm) VM (サーバ) 内でアプリケーションを実行します。
       
   462 .TP
       
   463 .BI \-J "option"
       
   464 jdb の実行に使用される Java 仮想マシンに \f2option\fP を渡します。(アプリケーション Java 仮想マシンに対するオプションは、\f3run\fP コマンドに渡される。)
       
   465 たとえば、
       
   466 .I \-J-Xms48m
       
   467 は、起動時に使用するメモリを 48M バイトに設定します。
       
   468 
       
   469 
       
   470 .LP
       
   471 これ以外にも、デバッガをデバッグされる VM に接続するための代替機構
       
   472 用のオプションがサポートされています。
       
   473 このような接続の代替機構については、
       
   474 .fi
       
   475 http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.html
       
   476 の Java Platform Debugger Architecture のマニュアルを参照してください。
       
   477 .LP
       
   478 .SS 
       
   479 デバッグ対象のプロセスに転送されるオプション
       
   480 .LP
       
   481 .TP 3
       
   482 \-v \-verbose[:class|gc|jni] 
       
   483 冗長モードにします。
       
   484 .TP 3
       
   485 \-D<name>=<value> 
       
   486 システムプロパティを設定します。
       
   487 .TP 3
       
   488 \-classpath <directories separated by
       
   489 ":"> 
       
   490 クラスを検索するディレクトリを一覧表示します。
       
   491 .TP 3
       
   492 \-X<option> 
       
   493 非標準ターゲット VM オプションです。
       
   494 .LP
       
   495 .SH "関連項目"
       
   496 .LP
       
   497 
       
   498 .LP
       
   499 .LP
       
   500 javac、java、javah、javap、javadoc
       
   501 .LP
       
   502 
       
   503 .LP
       
   504