src/solaris/doc/sun/man/man1/ja/jdb.1

Print this page


   1 ." Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
   2 ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   3 ."
   4 ." This code is free software; you can redistribute it and/or modify it
   5 ." under the terms of the GNU General Public License version 2 only, as
   6 ." published by the Free Software Foundation.
   7 ."
   8 ." This code is distributed in the hope that it will be useful, but WITHOUT
   9 ." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10 ." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  11 ." version 2 for more details (a copy is included in the LICENSE file that
  12 ." accompanied this code).
  13 ."
  14 ." You should have received a copy of the GNU General Public License version
  15 ." 2 along with this work; if not, write to the Free Software Foundation,
  16 ." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17 ."
  18 ." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19 ." or visit www.oracle.com if you need additional information or have any
  20 ." questions.
  21 ."
  22 .TH jdb 1 "07 May 2011"
  23 
  24 .LP
  25 .SH "名前"
  26 jdb \- Java デバッガ
  27 .LP
  28 .LP
  29 \f3jdb\fP は、Java 言語プログラムのバグを見つけて修正するために使用するツールです。
  30 .LP
  31 .SH "形式"
  32 .LP

























  33 .nf
  34 \f3
  35 .fl
  36 \fP\f3jdb\fP [ options ] [ class ] [ arguments ] 
  37 .fl
  38 .fi
  39 
  40 .LP
  41 .RS 3
  42 .TP 3
  43 options 
  44 次に示すコマンド行オプション 
  45 .TP 3
  46 class 
  47 デバッグを開始するクラスの名前 
  48 .TP 3
  49 arguments 
  50 class の \f2main()\fP メソッドに渡す \f2引数\fP 
  51 .RE
  52 
  53 .LP
  54 .SH " 説明"
  55 .LP
  56 .LP
  57 Java デバッガ \f3jdb\fP は、Java クラス用の簡単なコマンド行デバッガです。
  58 .na
  59 \f2Java Platform Debugger Architecture\fP @
  60 .fi
  61 http://java.sun.com/javase/6/docs/technotes/guides/jpda/index.html を視覚的に実行し、ローカルまたはリモートの Java Virtual Machine の検査とデバッグを行うことができます。
  62 .LP
  63 .SS 
  64 jdb セッションの開始
  65 .LP
  66 .LP
  67 jdb セッションを開始するにはさまざまな方法があります。もっとも頻繁に使われるのは、デバッグするアプリケーションのメインクラスを使用して、\f3jdb\fP から新しい Java 仮想マシン (VM) を起動する方法です。コマンド行で、\f3java\fP の代わりに \f3jdb\fP コマンドを入力します。たとえば、アプリケーションのメインクラスが MyClass の場合は、JDB 環境でデバッグするときに次のコマンドを使用します。
  68 .LP
  69 .nf
  70 \f3
  71 .fl
  72  % jdb MyClass 
  73 .fl
  74 \fP
  75 .fi
  76 
  77 .LP
  78 .LP
  79 この方法で起動すると、\f3jdb\fP は、指定されたパラメータを使って 2 つ目の Java VM を呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前に VM を停止させます。
  80 .LP
  81 .LP
  82 \f3jdb\fP のもう 1 つの使用方法は、すでに起動している Java VM に jdb を接続することです。jdb が接続する VM を、その実行中に起動するための構文を次に示します。これは、インプロセスデバッグ用ライブラリをロードし、接続の種類を指定します。
  83 .LP
  84 .nf
  85 \f3
  86 .fl
  87 \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n
  88 .fl
  89 \fP
  90 .fi
  91 
  92 .LP
  93 .LP
  94 たとえば、次のコマンドは、MyClass アプリケーションを実行して、\f3jdb\fP があとでそのアプリケーションに接続できるようにします。
  95 .LP






  96 .nf
  97 \f3
  98 .fl
  99  % java \-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n MyClass
 100 .fl
 101 \fP
 102 .fi
 103 
 104 .LP
 105 .LP
 106 次のコマンドを使用して、\f3jdb\fP を VM に接続できます。
 107 .LP




 108 .nf
 109 \f3
 110 .fl
 111  % jdb \-attach 8000 
 112 .fl
 113 \fP
 114 .fi
 115 
 116 .LP
 117 .LP
 118 この場合、\f3jdb\fP は新しい VM を起動する代わりに既存の VM に接続されるため、\f3jdb\fP コマンド行には「MyClass」は指定しません。
 119 .LP
 120 .LP
 121 デバッガを VM に接続するにはほかにもさまざまな方法があり、すべて \f3jdb\fP でサポートされています。接続オプションについては、Java Platform Debugger Architecture の
 122 .na
 123 \f2ドキュメント\fP @
 124 .fi
 125 http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。\f3jdb\fP で使用するために J2SE 1.4.2 以前の VM を起動する方法については、
 126 .na
 127 \f21.4.2 のドキュメント\fP @
 128 .fi
 129 http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.htmlを参照してください。
 130 .LP
 131 .SS 
 132 基本 jdb コマンド
 133 .LP
 134 .LP
 135 基本的な \f3jdb\fP コマンドの一覧を示します。Java デバッガがサポートするコマンドはこれ以外にもあり、それらは \f3jdb\fP の \f2help\fP コマンドを使用して表示できます。
 136 .LP
 137 .RS 3
 138 .TP 3
 139 help または ? 
 140 もっとも重要な \f3jdb\fP コマンド \f2help\fP は、認識されたコマンドのリストに簡潔な説明を付けて表示します。 
 141 .TP 3
 142 run 
 143 \f3jdb\fP を起動して必要なブレークポイントを設定したあとに、このコマンドを使用して、デバッグするアプリケーションの実行を開始できます。このコマンドは、既存の VM に接続している場合とは異なり、デバッグするアプリケーションが \f3jdb\fP から起動したときにだけ使用できます。 
 144 .TP 3


 145 cont 
 146 ブレークポイント、例外、またはステップ実行のあとで、デバッグするアプリケーションの実行を継続します。 
 147 .TP 3


 148 print 
 149 Java オブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトについては、以降の \f2dump\fP コマンドの説明を参照してください。 
 150 .LP
 151 \f2注: 局所変数を表示するには、その変数を含むクラスが \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP オプションでコンパイルされている必要があります。 
 152 .LP
 153 \f2print\fP では、メソッドの呼び出しを含む多数の簡単な Java 式がサポートされています。次に例を示します。 
 154 .RS 3
 155 .TP 2
 156 o
 157 \f2print MyClass.myStaticField\fP 
 158 .TP 2
 159 o
 160 \f2print myObj.myInstanceField\fP 
 161 .TP 2
 162 o
 163 \f2print i + j + k\fP (i、j、および k はプリミティブであり、フィールドまたは局所変数のいずれか) 
 164 .TP 2
 165 o
 166 \f2print myObj.myMethod()\fP (myMethod が null 以外を返す場合) 
 167 .TP 2
 168 o
 169 \f2print new java.lang.String("Hello").length()\fP 
 170 .RE
 171 .TP 3
 172 dump 
 173 プリミティブ値の場合には、このコマンドは \f2print\fP と同じです。オブジェクトの場合には、オブジェクト内に定義されている各フィールドの現在の値が出力されます。static フィールドと instance フィールドが出力されます。 
 174 .LP
 175 \f2dump\fP コマンドでは、\f2print\fP コマンドと同じ式がサポートされます。  
 176 .TP 3
 177 threads 
 178 現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、およびほかのコマンドに使用できるインデックスが出力されます。次に例を示します。 





 179 .nf
 180 \f3
 181 .fl
 182 4. (java.lang.Thread)0x1 main      running
 183 .fl
 184 \fP
 185 .fi
 186 この例では、スレッドインデックスは 4 であり、スレッドは java.lang.Thread のインスタンスです。スレッドの名前は「main」であり、現在実行中です。 
 187 .TP 3



 188 thread 
 189 現在のスレッドにするスレッドを選択します。多くの \f3jdb\fP コマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、\f2threads\fP コマンドで説明したスレッドインデックスとともに指定します。 
 190 .TP 3


 191 where 
 192 \f2引数を指定しないで\fP where を実行すると、現在のスレッドのスタックがダンプされます。 \f2where all\fP コマンドは、現在のスレッドグループにあるスレッドのスタックをすべてダンプします。 \f2where\fP \f2threadindex\fP は、指定されたスレッドのスタックをダンプします。 
 193 .LP
 194 現在のスレッドが (ブレークポイントか \f2suspend\fP コマンドによって) 中断している場合は、局所変数とフィールドは \f2print\fP コマンドと \f2dump\fP コマンドで表示できます。\f2up\fP コマンドと \f2down\fP コマンドで、どのスタックフレームをカレントにするかを選ぶことができます。  
 195 .RE
 196 
 197 .LP
 198 .SS 
 199 ブレークポイント
 200 .LP
 201 .LP
 202 ブレークポイントは、行番号またはメソッドの最初の命令で \f3jdb\fP に設定できます。次に例を示します。
 203 .LP
 204 .RS 3
 205 .TP 2
 206 o
 207 \f2stop at MyClass:22\fP (MyClass が含まれるソースファイルの 22 行目の最初の命令にブレークポイントを設定) 
 208 .TP 2
 209 o
 210 \f2stop in java.lang.String.length\fP (\f2java.lang.String.length\fP メソッドの最初にブレークポイントを設定) 
 211 .TP 2
 212 o
 213 \f2stop in MyClass.<init>\fP (<init> は MyClass コンストラクタを識別) 
 214 .TP 2
 215 o
 216 \f2stop in MyClass.<clinit>\fP (<clinit> は MyClass の静的初期化コードを識別) 
 217 .RE
 218 
 219 .LP
 220 .LP
 221 メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにしなければなりません。たとえば、「\f2MyClass.myMethod(int,java.lang.String)\fP」または「\f2MyClass.myMethod()\fP」と指定します。
 222 .LP
 223 .LP
 224 \f2clear\fP コマンドは、「\f2clear\ MyClass:45\fP」のような構文を使用してブレークポイントを削除します。\f2clear\fP を使用するか、引数を指定しないでコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\f2cont\fP コマンドは実行を継続します。
 225 .LP
 226 .SS 
 227 ステップ実行
 228 .LP
 229 .LP
 230 \f2step\fP コマンドは、現在のスタックフレームまたは呼び出されたメソッド内で、次の行を実行します。\f2next\fP コマンドは、現在のスタックフレームの次の行を実行します。
 231 .LP
 232 .SS 
 233 例外
 234 .LP
 235 .LP
 236 スローしているスレッドの呼び出しスタック上のどこにも catch 文がない場合に例外が発生すると、VM は通常、例外トレースを出力して終了します。ただし、\f3jdb\fP 環境で実行している場合は、例外が発生すると \f3jdb\fP に制御が戻ります。次に、\f3jdb\fP を使用して例外の原因を診断します。
 237 .LP
 238 .LP
 239 たとえば、「\f2catch java.io.FileNotFoundException\fP」または「\f2catch mypackage.BigTroubleException\fP」のように \f2catch\fP コマンドを使用すると、デバッグされたアプリケーションは、ほかの例外がスローされたときに停止します。例外が特定のクラス (またはサブクラス) のインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。
 240 .LP
 241 .LP
 242 \f2ignore\fP コマンドを使うと、以前の \f2catch\fP コマンドの効果が無効になります。
 243 .LP
 244 .LP
 245 \f2注: \fP\f2ignore\fP コマンドでは、デバッグされる VM は例外を無視せず、デバッガだけが例外を無視します。
 246 .LP
 247 .SH "コマンド行オプション"
 248 .LP
 249 .LP
 250 コマンド行で Java アプリケーション起動ツールの代わりに \f3jdb\fP を使用する場合、\f3jdb\fP は、\f2\-D\fP、\f2\-classpath\fP、\f2\-X<option>\fP など、java コマンドと同じ数のオプションを受け入れます。
 251 .LP
 252 .LP
 253 \f3jdb\fP は、そのほかに次のオプションを受け入れます。
 254 .LP
 255 .RS 3
 256 .TP 3
 257 \-help 
 258 ヘルプメッセージを表示します。 
 259 .TP 3
 260 \-sourcepath <dir1:dir2:...> 
 261 指定されたパスを使用して、ソースファイルを検索します。このオプションが指定されていない場合は、デフォルトパスの「.」が使われます。 
 262 .TP 3
 263 \-attach <address> 
 264 デフォルトの接続機構を使用して、すでに実行中の VM にデバッガを接続します。 
 265 .TP 3
 266 \-listen <address> 
 267 実行中の VM が標準のコネクタを使って指定されたアドレスに接続するのを待機します。 
 268 .TP 3
 269 \-listenany 
 270 実行中の VM が標準のコネクタを使って利用可能な任意のアドレスに接続するのを待機します。 
 271 .TP 3





 272 \-launch 
 273 デバッグするアプリケーションを jdb の起動後ただちに起動します。このオプションによって、\f2run\fP コマンドを使用する必要がなくなります。デバッグするアプリケーションは、起動後、初期アプリケーションクラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\f2cont\fP を使用して実行を継続できます。 
 274 .TP 3


 275 \-listconnectors 
 276 この VM で利用できるコネクタを一覧表示します。 
 277 .TP 3
 278 \-connect <connector\-name>:<name1>=<value1>,... 
 279 一覧表示された引数の値と指定のコネクタを使ってターゲット VM に接続します。 
 280 .TP 3
 281 \-dbgtrace [flags] 
 282 jdb のデバッグ情報を出力します。 
 283 .TP 3






 284 \-tclient 
 285 Java HotSpot(tm) VM (クライアント) 内でアプリケーションを実行します。 
 286 .TP 3


 287 \-tserver 
 288 Java HotSpot(tm) VM (サーバー) 内でアプリケーションを実行します。 
 289 .TP 3
 290 \-Joption 
 291 jdb の実行に使用される Java 仮想マシンに \f2option\fP を渡します。(アプリケーション Java 仮想マシンに対するオプションは、\f3run\fP コマンドに渡される)。たとえば、\f3\-J\-Xms48m\fP と指定すると、スタートアップメモリーは 48M バイトに設定されます。 
 292 .RE
 293 
 294 .LP
 295 .LP
 296 デバッガとデバッグを行う VM を接続するための代替機構に対して、その他のオプションがサポートされています。その他の接続オプションについては、Java Platform Debugger Architecture の
 297 .na
 298 \f2ドキュメント\fP @
 299 .fi
 300 http://java.sun.com/javase/6/docs/technotes/guides/jpda/conninv.htmlを参照してください。
 301 .LP
 302 .SS 
 303 デバッグ対象のプロセスに転送されるオプション
 304 .LP
 305 .RS 3
 306 .TP 3
 307 \-v \-verbose[:class|gc|jni] 
 308 冗長モードにします。 
 309 .TP 3
 310 \-D<name>=<value> 
 311 システムプロパティーを設定します。 
 312 .TP 3
 313 \-classpath <directories separated by ":"> 
 314 クラスを検索するディレクトリを一覧表示します。 
 315 .TP 3
 316 \-X<option> 
 317 非標準ターゲット VM オプションです。 
 318 .RE
 319 
 320 .LP













 321 .SH "関連項目"
 322 .LP
 323 .LP
 324 javac(1)、java(1)、javah(1)、javap(1)、javadoc(1)
 325 .LP
 326  










































   1 '\" t
   2 .\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
   3 .\" Title: jdb
   4 .\" Language: English
   5 .\" Date: 2013年11月21日
   6 .\" SectDesc: 基本ツール
   7 .\" Software: JDK 8
   8 .\" Arch: 汎用
   9 .\"
  10 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  11 .\"
  12 .\" This code is free software; you can redistribute it and/or modify it
  13 .\" under the terms of the GNU General Public License version 2 only, as
  14 .\" published by the Free Software Foundation.
  15 .\"
  16 .\" This code is distributed in the hope that it will be useful, but WITHOUT
  17 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  18 .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  19 .\" version 2 for more details (a copy is included in the LICENSE file that
  20 .\" accompanied this code).
  21 .\"
  22 .\" You should have received a copy of the GNU General Public License version
  23 .\" 2 along with this work; if not, write to the Free Software Foundation,
  24 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  25 .\"
  26 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  27 .\" or visit www.oracle.com if you need additional information or have any
  28 .\" questions.
  29 .\"
  30 .pl 99999
  31 .TH "jdb" "1" "2013年11月21日" "JDK 8" "基本ツール"
  32 .\" -----------------------------------------------------------------
  33 .\" * Define some portability stuff
  34 .\" -----------------------------------------------------------------
  35 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36 .\" http://bugs.debian.org/507673
  37 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
  38 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  39 .ie \n(.g .ds Aq \(aq
  40 .el       .ds Aq '
  41 .\" -----------------------------------------------------------------
  42 .\" * set default formatting
  43 .\" -----------------------------------------------------------------
  44 .\" disable hyphenation
  45 .nh
  46 .\" disable justification (adjust text to left margin only)
  47 .ad l
  48 .\" -----------------------------------------------------------------
  49 .\" * MAIN CONTENT STARTS HERE *
  50 .\" -----------------------------------------------------------------
  51 .SH "NAME"
  52 jdb \- Javaプラットフォーム・プログラムの不具合を検出および修正します。
  53 .SH "概要"
  54 .sp
  55 .if n \{\
  56 .RS 4
  57 .\}
  58 .nf
  59 \fIjdb\fR [\fIoptions\fR] [\fIclassname\fR] [\fIarguments\fR]



  60 .fi
  61 .if n \{\
  62 .RE
  63 .\}
  64 .PP
  65 \fIoptions\fR
  66 .RS 4
  67 コマンドライン・オプション。オプションを参照してください。
  68 .RE
  69 .PP
  70 \fIclass\fRname
  71 .RS 4
  72 デバッグするメイン・クラスの名前。
  73 .RE
  74 .PP
  75 \fIarguments\fR
  76 .RS 4
  77 classの\fImain()\fRメソッドに渡す引数。
  78 .RE
  79 .SH "説明"
  80 .PP
  81 Javaデバッガ(JDB)は、Javaクラス用の簡単なコマンドライン・デバッガです。\fIjdb\fRコマンドとそのオプションはJDBを呼び出します。\fIjdb\fRコマンドは、JDBA (Java Platform Debugger Architecture)を視覚的に実行し、ローカルまたはリモートのJava仮想マシン(JVM)の検査とデバッグを行うことができます。Java Platform Debugger Architecture (JDBA)
  82 (http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください。
  83 .SS "JDBセッションの開始"
  84 .PP
  85 JDBセッションを開始するには様々な方法があります。最も頻繁に使用されるのは、デバッグするアプリケーションのメイン・クラスを使用して、JDBから新しいJVMを起動する方法です。コマンドラインで、\fIjava\fRコマンドのかわりに\fIjdb\fRコマンドを入力します。たとえば、アプリケーションのメイン・クラスが\fIMyClass\fRの場合は、JDB環境でデバッグするときに次のコマンドを使用します。
  86 .sp
  87 .if n \{\
  88 .RS 4
  89 .\}
















  90 .nf
  91 jdb MyClass




  92 .fi
  93 .if n \{\
  94 .RE
  95 .\}
  96 .PP
  97 この方法で起動すると、\fIjdb\fRコマンドは、指定されたパラメータを使用して2つ目のJVMを呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前にJVMを停止させます。
  98 .PP
  99 \fIjdb\fRコマンドのもう1つの使用方法は、すでに実行中のJVMにjdbを接続することです。\fIjdb\fRコマンドが接続するVMを、その実行中に起動するための構文を次に示します。これは、インプロセス・デバッグ用ライブラリをロードし、接続の種類を指定します。
 100 .sp
 101 .if n \{\
 102 .RS 4
 103 .\}
 104 .nf
 105 java \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass




 106 .fi
 107 .if n \{\
 108 .RE
 109 .\}
 110 .PP
 111 次のコマンドを使用して、\fIjdb\fRコマンドをJVMに接続できます。
 112 .sp
 113 .if n \{\
 114 .RS 4
 115 .\}
 116 .nf
 117 jdb \-attach 8000




 118 .fi
 119 .if n \{\
 120 .RE
 121 .\}
 122 .PP
 123 この場合、\fIjdb\fRコマンドは新しいJVMを起動するかわりに既存のJVMに接続されるため、\fIjdb\fRコマンドラインに\fIMyClass\fR引数は指定しません。
 124 .PP
 125 デバッガをJVMに接続するには他にも様々な方法があり、すべて\fIjdb\fRコマンドでサポートされています。接続オプションについては、Java Platform Debugger Architectureのドキュメントを参照してください。
 126 .SS "基本jdbコマンド"
 127 .PP
 128 基本的な\fIjdb\fRコマンドの一覧を示します。JDBがサポートするコマンドはこれ以外にもあり、それらは\fI\-help\fRオプションを使用して表示できます。
 129 .PP
 130 helpまたは?
 131 .RS 4
 132 \fIhelp\fRまたは\fI?\fRコマンドは、認識されたコマンドのリストに簡潔な説明を付けて表示します。
 133 .RE
 134 .PP











 135 run
 136 .RS 4
 137 JDBを起動してブレークポイントを設定したあとに、\fIrun\fRコマンドを使用して、デバッグするアプリケーションの実行を開始できます。\fIrun\fRコマンドは、既存のVMに接続している場合とは異なり、デバッグするアプリケーションが\fIjdb\fRから起動したときにのみ使用できます。
 138 .RE
 139 .PP
 140 cont
 141 .RS 4
 142 ブレークポイント、例外、またはステップ実行の後で、デバッグするアプリケーションの実行を継続します。
 143 .RE
 144 .PP
 145 print
 146 .RS 4
 147 Javaオブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトの詳細を取得する方法を探すには、dumpコマンドを参照してください。
 148 .sp
 149 \fB注意:\fR
 150 ローカル変数を表示するには、含んでいるクラスが\fIjavac \-g\fRオプションを使用してコンパイルされている必要があります。
 151 .sp
 152 \fIprint\fRコマンドは、次に示すような、メソッド呼出しを使用したものなど、多くの簡単なJava式をサポートします。
 153 .sp
 154 .if n \{\
 155 .RS 4
 156 .\}
 157 .nf
 158 print MyClass\&.myStaticField
 159 print myObj\&.myInstanceField
 160 print i + j + k (i, j, k are primities and either fields or local variables)
 161 print myObj\&.myMethod() (if myMethod returns a non\-null)
 162 print new java\&.lang\&.String("Hello")\&.length()
 163 .fi
 164 .if n \{\
 165 .RE
 166 .\}
 167 .RE
 168 .PP
 169 dump
 170 .RS 4
 171 プリミティブ値の場合、\fIdump\fRコマンドは\fIprint\fRコマンドと同一です。オブジェクトの場合、\fIdump\fRコマンドでは、オブジェクト内に定義されている各フィールドの現在の値が出力されます。staticフィールドとinstanceフィールドが出力されます。\fIdump\fRコマンドでは、\fIprint\fRコマンドと同じ式がサポートされます。
 172 .RE
 173 .PP
 174 threads
 175 .RS 4
 176 現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、および他のコマンドに使用できるインデックスが出力されます。この例では、スレッド・インデックスは4であり、スレッドは\fIjava\&.lang\&.Thread\fRのインスタンスで、スレッドの名前は\fImain\fRであり、現在実行中です。
 177 .sp
 178 .if n \{\
 179 .RS 4
 180 .\}
 181 .nf
 182 4\&. (java\&.lang\&.Thread)0x1 main      running




 183 .fi
 184 .if n \{\
 185 .RE
 186 .\}
 187 .RE
 188 .PP
 189 thread
 190 .RS 4
 191 現在のスレッドにするスレッドを選択します。多くの\fIjdb\fRコマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、threadsコマンドで説明したスレッド・インデックスとともに指定します。
 192 .RE
 193 .PP
 194 where
 195 .RS 4
 196 引数を指定しないで\fIwhere\fRコマンドを実行すると、現在のスレッドのスタックがダンプされます。\fIwhere\fR
 197 \fIall\fRコマンドは、現在のスレッド・グループにあるスレッドのスタックをすべてダンプします。\fIwhere\fR
 198 \fIthreadindex\fRコマンドは、指定されたスレッドのスタックをダンプします。
 199 .sp
 200 現在のスレッドが(ブレークポイントか\fIsuspend\fRコマンドによって)中断している場合は、ローカル変数とフィールドは\fIprint\fRコマンドと\fIdump\fRコマンドで表示できます。\fIup\fRコマンドと\fIdown\fRコマンドで、どのスタック・フレームを現在のスタック・フレームにするかを選ぶことができます。
 201 .RE
 202 .SS "ブレークポイント"
 203 .PP
 204 ブレークポイントは、行番号またはメソッドの最初の命令でJDBに設定できます。次に例を示します。
 205 .sp
 206 .RS 4
 207 .ie n \{\
 208 \h'-04'\(bu\h'+03'\c
 209 .\}
 210 .el \{\
 211 .sp -1
 212 .IP \(bu 2.3
 213 .\}
 214 コマンド\fIstop at MyClass:22\fRは、\fIMyClass\fRが含まれるソース・ファイルの22行目の最初の命令にブレークポイントを設定します。
 215 .RE
 216 .sp
 217 .RS 4
 218 .ie n \{\
 219 \h'-04'\(bu\h'+03'\c
 220 .\}
 221 .el \{\
 222 .sp -1
 223 .IP \(bu 2.3
 224 .\}
 225 コマンド\fIstop in java\&.lang\&.String\&.length\fRは、メソッド\fIjava\&.lang\&.String\&.length\fRの先頭にブレークポイントを設定します。
 226 .RE
 227 .sp
 228 .RS 4
 229 .ie n \{\
 230 \h'-04'\(bu\h'+03'\c
 231 .\}
 232 .el \{\
 233 .sp -1
 234 .IP \(bu 2.3
 235 .\}
 236 コマンド\fIstop in MyClass\&.<clinit>\fRは、\fI<clinit>\fRを使用して\fIMyClass\fRの静的初期化コードを特定します。
 237 .RE
 238 .PP
 239 メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにする必要があります。たとえば、\fIMyClass\&.myMethod(int,java\&.lang\&.String)\fRまたは\fIMyClass\&.myMethod()\fRと指定します。
 240 .PP
 241 \fIclear\fRコマンドは、\fIclear MyClass:45\fRのような構文を使用してブレークポイントを削除します。\fIclear\fRを使用するか、引数を指定しないで\fIstop\fRコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\fIcont\fRコマンドは実行を継続します。
 242 .SS "ステップ実行"
 243 .PP
 244 \fIstep\fRコマンドは、現在のスタック・フレームまたは呼び出されたメソッド内で、次の行を実行します。\fInext\fRコマンドは、現在のスタック・フレームの次の行を実行します。
 245 .SS "例外"
 246 .PP
 247 スローしているスレッドの呼出しスタック上のどこにも\fIcatch\fR文がない場合に例外が発生すると、JVMは通常、例外トレースを出力して終了します。ただし、JDB環境で実行している場合は、違反のスロー時にJDBに制御が戻ります。次に、\fIjdb\fRコマンドを使用して例外の原因を診断します。
 248 .PP
 249 たとえば、\fIcatch java\&.io\&.FileNotFoundException\fRまたは\fIcatch\fR
 250 \fImypackage\&.BigTroubleException\fRのように\fIcatch\fRコマンドを使用すると、デバッグされたアプリケーションは、他の例外がスローされたときに停止します。例外が特定のクラスまたはサブクラスのインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。
 251 .PP
 252 \fIignore\fRコマンドを使用すると、以前の\fIcatch\fRコマンドの効果が無効になります。\fIignore\fRコマンドでは、デバッグされるJVMは特定の例外を無視せず、デバッガのみを無視します。
 253 .SH "オプション"
 254 .PP
 255 コマンドラインで\fIjava\fRコマンドのかわりに\fIjdb\fRコマンドを使用する場合、\fIjdb\fRコマンドは、\fI\-D\fR、\fI\-classpath\fR、\fI\-X\fRなど、\fIjava\fRコマンドと同じ数のオプションを受け入れます。\fIjdb\fRコマンドは、その他に次のリストにあるオプションを受け入れます。
 256 .PP
 257 デバッグを行うJVMにデバッガを接続するための代替機構を提供するために、その他のオプションがサポートされています。これらの接続の代替に関する詳細なドキュメントは、Java Platform Debugger Architecture (JPDA)
 258 (http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください
 259 .PP
 260 \-help
 261 .RS 4
 262 ヘルプ・メッセージを表示します。
 263 .RE
 264 .PP
 265 \-sourcepath \fIdir1:dir2: \&. \&. \&.\fR
 266 .RS 4
 267 指定されたパスを使用して、ソース・ファイルを検索します。このオプションが指定されていない場合は、デフォルト・パスのドット(\&.)が使用されます。
 268 .RE
 269 .PP
 270 \-attach \fIaddress\fR
 271 .RS 4
 272 デフォルトの接続機構を使用して、実行中のJVMにデバッガを接続します。
 273 .RE
 274 .PP
 275 \-listen \fIaddress\fR
 276 .RS 4
 277 実行中のJVMが標準のコネクタを使用して指定されたアドレスに接続するのを待機します。
 278 .RE
 279 .PP
 280 \-launch
 281 .RS 4
 282 デバッグするアプリケーションをJDBの起動後ただちに起動します。\fI\-launch\fRオプションにより、\fIrun\fRコマンドが必要なくなります。デバッグするアプリケーションは、起動後、初期アプリケーション・クラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\fIcont\fRコマンドを使用して実行を継続できます。
 283 .RE
 284 .PP
 285 \-listconnectors
 286 .RS 4
 287 このJVMで利用できるコネクタを一覧表示します。
 288 .RE
 289 .PP
 290 \-connect connector\-name:\fIname1=value1\fR
 291 .RS 4
 292 一覧表示された引数の値と指定のコネクタを使用してターゲットJVMに接続します。
 293 .RE
 294 .PP
 295 \-dbgtrace [\fIflags\fR]
 296 .RS 4
 297 \fIjdb\fRコマンドのデバッグの情報を出力します。
 298 .RE
 299 .PP
 300 \-tclient
 301 .RS 4
 302 Java HotSpot VMクライアント内でアプリケーションを実行します。
 303 .RE
 304 .PP
 305 \-tserver
 306 .RS 4
 307 Java HotSpot VMサーバー内でアプリケーションを実行します。
 308 .RE
 309 .PP
 310 \-J\fIoption\fR
 311 .RS 4
 312 JVMに\fIoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fI\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。
 313 .RE
 314 .SH "デバッグ対象のプロセスに転送されるオプション"
 315 .PP
 316 \-v \-verbose[:\fIclass\fR|gc|jni]
 317 .RS 4








 318 冗長モードにします。









 319 .RE
 320 .PP
 321 \-D\fIname\fR=\fIvalue\fR
 322 .RS 4
 323 システム・プロパティを設定します。
 324 .RE
 325 .PP
 326 \-classpath \fIdir\fR
 327 .RS 4
 328 クラスを検索するための、コロンで区切って指定されたディレクトリのリスト。
 329 .RE
 330 .PP
 331 \-X\fIoption\fR
 332 .RS 4
 333 非標準ターゲットJVMオプションです。
 334 .RE
 335 .SH "関連項目"
 336 .sp
 337 .RS 4
 338 .ie n \{\
 339 \h'-04'\(bu\h'+03'\c
 340 .\}
 341 .el \{\
 342 .sp -1
 343 .IP \(bu 2.3
 344 .\}
 345 javac(1)
 346 .RE
 347 .sp
 348 .RS 4
 349 .ie n \{\
 350 \h'-04'\(bu\h'+03'\c
 351 .\}
 352 .el \{\
 353 .sp -1
 354 .IP \(bu 2.3
 355 .\}
 356 java(1)
 357 .RE
 358 .sp
 359 .RS 4
 360 .ie n \{\
 361 \h'-04'\(bu\h'+03'\c
 362 .\}
 363 .el \{\
 364 .sp -1
 365 .IP \(bu 2.3
 366 .\}
 367 javah(1)
 368 .RE
 369 .sp
 370 .RS 4
 371 .ie n \{\
 372 \h'-04'\(bu\h'+03'\c
 373 .\}
 374 .el \{\
 375 .sp -1
 376 .IP \(bu 2.3
 377 .\}
 378 javap(1)
 379 .RE
 380 .br
 381 'pl 8.5i
 382 'bp