jdb.1 12.5 KB
Newer Older
M
mfang 已提交
1
'\" t
2
.\" Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
M
mfang 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
.\"
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
.\" under the terms of the GNU General Public License version 2 only, as
.\" published by the Free Software Foundation.
.\"
.\" This code is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
.\" version 2 for more details (a copy is included in the LICENSE file that
.\" accompanied this code).
.\"
.\" You should have received a copy of the GNU General Public License version
.\" 2 along with this work; if not, write to the Free Software Foundation,
.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
24 25 26 27 28 29 30 31 32
.\" Title: jdb
.\" Language: Japanese
.\" Date: 2013年11月21日
.\" SectDesc: 基本ツール
.\" Software: JDK 8
.\" Arch: 汎用
.\" Part Number: E54734-01
.\"
.if n .pl 99999
M
mfang 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
.TH "jdb" "1" "2013年11月21日" "JDK 8" "基本ツール"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
53 54
.SH "名前"
jdb \- Javaプラットフォーム・プログラムのbugを検出および修正します。
M
mfang 已提交
55 56 57 58 59
.SH "概要"
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
60
.nf
61
\fBjdb\fR [\fIoptions\fR] [\fIclassname\fR] [\fIarguments\fR]
D
duke 已提交
62
.fi
M
mfang 已提交
63 64 65 66 67 68
.if n \{\
.RE
.\}
.PP
\fIoptions\fR
.RS 4
69
コマンド行オプション。オプションを参照してください。
M
mfang 已提交
70 71 72 73 74 75 76 77 78
.RE
.PP
\fIclass\fRname
.RS 4
デバッグするメイン・クラスの名前。
.RE
.PP
\fIarguments\fR
.RS 4
79
classの\fBmain()\fRメソッドに渡す引数。
M
mfang 已提交
80 81 82
.RE
.SH "説明"
.PP
83
Javaデバッガ(JDB)は、Javaクラス用の簡単なコマンド行デバッガです。\fBjdb\fRコマンドとそのオプションはJDBを呼び出します。\fBjdb\fRコマンドは、JDBA (Java Platform Debugger Architecture)を視覚的に実行し、ローカルまたはリモートのJava Virtual Machine (JVM)の検査とデバッグを行うことができます。Java Platform Debugger Architecture (JDBA)
M
mfang 已提交
84 85 86
(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください。
.SS "JDBセッションの開始"
.PP
87
JDBセッションを開始するには様々な方法があります。最も頻繁に使用されるのは、デバッグするアプリケーションのメイン・クラスを使用して、JDBから新しいJVMを起動する方法です。コマンド行で、\fBjava\fRコマンドのかわりに\fBjdb\fRコマンドを入力します。たとえば、アプリケーションのメイン・クラスが\fBMyClass\fRの場合は、JDB環境でデバッグするときに次のコマンドを使用します。
M
mfang 已提交
88 89 90 91
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
92
.nf
93 94
\fBjdb MyClass\fR
 
T
tbell 已提交
95
.fi
M
mfang 已提交
96 97 98 99
.if n \{\
.RE
.\}
.PP
100
この方法で起動すると、\fBjdb\fRコマンドは、指定されたパラメータを使用して2つ目のJVMを呼び出します。次に、指定されたクラスをロードして、クラスの最初の命令を実行する前にJVMを停止させます。
M
mfang 已提交
101
.PP
102
\fBjdb\fRコマンドのもう1つの使用方法は、すでに実行中のJVMにjdbを接続することです。\fBjdb\fRコマンドが接続するVMを、その実行中に起動するための構文を次に示します。これは、インプロセス・デバッグ用ライブラリをロードし、接続の種類を指定します。
M
mfang 已提交
103 104 105 106
.sp
.if n \{\
.RS 4
.\}
D
duke 已提交
107
.nf
108 109
\fBjava \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass\fR
 
D
duke 已提交
110
.fi
M
mfang 已提交
111 112 113 114
.if n \{\
.RE
.\}
.PP
115
次のコマンドを使用して、\fBjdb\fRコマンドをJVMに接続できます。
M
mfang 已提交
116 117 118 119
.sp
.if n \{\
.RS 4
.\}
D
duke 已提交
120
.nf
121 122
\fBjdb \-attach 8000\fR
 
D
duke 已提交
123
.fi
M
mfang 已提交
124 125 126 127
.if n \{\
.RE
.\}
.PP
128
この場合、\fBjdb\fRコマンドは新しいJVMを起動するかわりに既存のJVMに接続されるため、\fBjdb\fRコマンド行に\fBMyClass\fR引数は指定しません。
M
mfang 已提交
129
.PP
130
デバッガをJVMに接続するには他にも様々な方法があり、すべて\fBjdb\fRコマンドでサポートされています。接続オプションについては、Java Platform Debugger Architectureのドキュメントを参照してください。
M
mfang 已提交
131 132
.SS "基本jdbコマンド"
.PP
133
基本的な\fBjdb\fRコマンドの一覧を示します。JDBがサポートするコマンドはこれ以外にもあり、それらは\fB\-help\fRオプションを使用して表示できます。
M
mfang 已提交
134 135 136
.PP
helpまたは?
.RS 4
137
\fBhelp\fRまたは\fB?\fRコマンドは、認識されたコマンドのリストに簡潔な説明を付けて表示します。
M
mfang 已提交
138 139 140 141
.RE
.PP
run
.RS 4
142
JDBを起動してブレークポイントを設定したあとに、\fBrun\fRコマンドを使用して、デバッグするアプリケーションの実行を開始できます。\fBrun\fRコマンドは、既存のVMに接続している場合とは異なり、デバッグするアプリケーションが\fBjdb\fRから起動したときにのみ使用できます。
M
mfang 已提交
143 144 145 146 147 148 149 150 151 152 153 154
.RE
.PP
cont
.RS 4
ブレークポイント、例外、またはステップ実行の後で、デバッグするアプリケーションの実行を継続します。
.RE
.PP
print
.RS 4
Javaオブジェクトおよびプリミティブ値を表示します。プリミティブ型の変数またはフィールドの場合には、実際の値が出力されます。オブジェクトの場合には、短い説明が出力されます。オブジェクトの詳細を取得する方法を探すには、dumpコマンドを参照してください。
.sp
\fB注意:\fR
155
ローカル変数を表示するには、含んでいるクラスが\fBjavac \-g\fRオプションを使用してコンパイルされている必要があります。
M
mfang 已提交
156
.sp
157
\fBprint\fRコマンドは、次に示すような、メソッド呼出しを使用したものなど、多くの簡単なJava式をサポートします。
M
mfang 已提交
158 159 160 161
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
162
.nf
163 164 165 166 167 168
\fBprint MyClass\&.myStaticField\fR
\fBprint myObj\&.myInstanceField\fR
\fBprint i + j + k (i, j, k are primities and either fields or local variables)\fR
\fBprint myObj\&.myMethod() (if myMethod returns a non\-null)\fR
\fBprint new java\&.lang\&.String("Hello")\&.length()\fR
 
T
tbell 已提交
169
.fi
M
mfang 已提交
170 171 172 173 174 175 176
.if n \{\
.RE
.\}
.RE
.PP
dump
.RS 4
177
プリミティブ値の場合、\fBdump\fRコマンドは\fBprint\fRコマンドと同一です。オブジェクトの場合、\fBdump\fRコマンドでは、オブジェクト内に定義されている各フィールドの現在の値が出力されます。staticフィールドとinstanceフィールドが出力されます。\fBdump\fRコマンドでは、\fBprint\fRコマンドと同じ式がサポートされます。
M
mfang 已提交
178 179 180 181
.RE
.PP
threads
.RS 4
182
現在実行中のスレッドを一覧表示します。スレッドごとに、名前と現在の状態、および他のコマンドに使用できるインデックスが出力されます。この例では、スレッド・インデックスは4であり、スレッドは\fBjava\&.lang\&.Thread\fRのインスタンスで、スレッドの名前は\fBmain\fRであり、現在実行中です。
M
mfang 已提交
183 184 185 186
.sp
.if n \{\
.RS 4
.\}
T
tbell 已提交
187
.nf
188 189
\fB4\&. (java\&.lang\&.Thread)0x1 main      running\fR
 
D
duke 已提交
190
.fi
M
mfang 已提交
191 192 193 194 195 196 197
.if n \{\
.RE
.\}
.RE
.PP
thread
.RS 4
198
現在のスレッドにするスレッドを選択します。多くの\fBjdb\fRコマンドは、現在のスレッドの設定に基づいて実行されます。スレッドは、threadsコマンドで説明したスレッド・インデックスとともに指定します。
M
mfang 已提交
199 200 201 202
.RE
.PP
where
.RS 4
203 204 205
引数を指定しないで\fBwhere\fRコマンドを実行すると、現在のスレッドのスタックがダンプされます。\fBwhere\fR
\fBall\fRコマンドは、現在のスレッド・グループにあるスレッドのスタックをすべてダンプします。\fBwhere\fR
\fBthreadindex\fRコマンドは、指定されたスレッドのスタックをダンプします。
M
mfang 已提交
206
.sp
207
現在のスレッドが(ブレークポイントか\fBsuspend\fRコマンドによって)中断している場合は、ローカル変数とフィールドは\fBprint\fRコマンドと\fBdump\fRコマンドで表示できます。\fBup\fRコマンドと\fBdown\fRコマンドで、どのスタック・フレームを現在のスタック・フレームにするかを選ぶことができます。
M
mfang 已提交
208 209 210 211 212 213 214 215 216 217 218 219 220
.RE
.SS "ブレークポイント"
.PP
ブレークポイントは、行番号またはメソッドの最初の命令でJDBに設定できます。次に例を示します。
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
221
コマンド\fBstop at MyClass:22\fRは、\fBMyClass\fRが含まれるソース・ファイルの22行目の最初の命令にブレークポイントを設定します。
M
mfang 已提交
222 223 224 225 226 227 228 229 230 231
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
232
コマンド\fBstop in java\&.lang\&.String\&.length\fRは、メソッド\fBjava\&.lang\&.String\&.length\fRの先頭にブレークポイントを設定します。
M
mfang 已提交
233 234 235 236 237 238 239 240 241 242
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
243
コマンド\fBstop in MyClass\&.<clinit>\fRは、\fB<clinit>\fRを使用して、\fBMyClass\fRの静的初期化コードを特定します。
M
mfang 已提交
244 245
.RE
.PP
246
メソッドがオーバーロードされている場合には、メソッドの引数の型も指定して、ブレークポイントに対して適切なメソッドが選択されるようにする必要があります。たとえば、\fBMyClass\&.myMethod(int,java\&.lang\&.String)\fRまたは\fBMyClass\&.myMethod()\fRと指定します。
M
mfang 已提交
247
.PP
248
\fBclear\fRコマンドは、\fBclear MyClass:45\fRのような構文を使用してブレークポイントを削除します。\fBclear\fRを使用するか、引数を指定しないで\fBstop\fRコマンドを使用すると、現在設定されているすべてのブレークポイントが表示されます。\fBcont\fRコマンドは実行を継続します。
M
mfang 已提交
249 250
.SS "ステップ実行"
.PP
251
\fBstep\fRコマンドは、現在のスタック・フレームまたは呼び出されたメソッド内で、次の行を実行します。\fBnext\fRコマンドは、現在のスタック・フレームの次の行を実行します。
M
mfang 已提交
252 253
.SS "例外"
.PP
254
スローしているスレッドの呼出しスタック上のどこにも\fBcatch\fR文がない場合に例外が発生すると、JVMは通常、例外トレースを出力して終了します。ただし、JDB環境で実行している場合は、違反のスロー時にJDBに制御が戻ります。次に、\fBjdb\fRコマンドを使用して例外の原因を診断します。
M
mfang 已提交
255
.PP
256 257
たとえば、\fBcatch java\&.io\&.FileNotFoundException\fRまたは\fBcatch\fR
\fBmypackage\&.BigTroubleException\fRのように\fBcatch\fRコマンドを使用すると、デバッグされたアプリケーションは、他の例外がスローされたときに停止します。例外が特定のクラスまたはサブクラスのインスタンスの場合は、アプリケーションは例外がスローされた場所で停止します。
M
mfang 已提交
258
.PP
259
\fBignore\fRコマンドを使用すると、以前の\fBcatch\fRコマンドの効果が無効になります。\fBignore\fRコマンドでは、デバッグされるJVMは特定の例外を無視せず、デバッガのみを無視します。
M
mfang 已提交
260 261
.SH "オプション"
.PP
262
コマンド行で\fBjava\fRコマンドのかわりに\fBjdb\fRコマンドを使用する場合、\fBjdb\fRコマンドは、\fB\-D\fR、\fB\-classpath\fR、\fB\-X\fRなど、\fBjava\fRコマンドと同じ数のオプションを受け入れます。\fBjdb\fRコマンドは、その他に次のリストにあるオプションを受け入れます。
M
mfang 已提交
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
.PP
デバッグを行うJVMにデバッガを接続するための代替機構を提供するために、その他のオプションがサポートされています。これらの接続の代替に関する詳細なドキュメントは、Java Platform Debugger Architecture (JPDA)
(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html)を参照してください
.PP
\-help
.RS 4
ヘルプ・メッセージを表示します。
.RE
.PP
\-sourcepath \fIdir1:dir2: \&. \&. \&.\fR
.RS 4
指定されたパスを使用して、ソース・ファイルを検索します。このオプションが指定されていない場合は、デフォルト・パスのドット(\&.)が使用されます。
.RE
.PP
\-attach \fIaddress\fR
.RS 4
デフォルトの接続機構を使用して、実行中のJVMにデバッガを接続します。
.RE
.PP
\-listen \fIaddress\fR
.RS 4
実行中のJVMが標準のコネクタを使用して指定されたアドレスに接続するのを待機します。
.RE
.PP
\-launch
.RS 4
289
デバッグするアプリケーションをJDBの起動後ただちに起動します。\fB\-launch\fRオプションにより、\fBrun\fRコマンドが必要なくなります。デバッグするアプリケーションは、起動後、初期アプリケーション・クラスがロードされる直前に停止します。その時点で、必要なブレークポイントを設定し、\fBcont\fRコマンドを使用して実行を継続できます。
M
mfang 已提交
290 291 292 293 294 295 296 297 298 299 300 301 302 303
.RE
.PP
\-listconnectors
.RS 4
このJVMで利用できるコネクタを一覧表示します。
.RE
.PP
\-connect connector\-name:\fIname1=value1\fR
.RS 4
一覧表示された引数の値と指定のコネクタを使用してターゲットJVMに接続します。
.RE
.PP
\-dbgtrace [\fIflags\fR]
.RS 4
304
\fBjdb\fRコマンドのデバッグの情報を出力します。
M
mfang 已提交
305 306 307 308 309 310 311 312 313 314 315 316 317 318
.RE
.PP
\-tclient
.RS 4
Java HotSpot VMクライアント内でアプリケーションを実行します。
.RE
.PP
\-tserver
.RS 4
Java HotSpot VMサーバー内でアプリケーションを実行します。
.RE
.PP
\-J\fIoption\fR
.RS 4
319
JVMに\fBoption\fRを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、\fB\-J\-Xms48m\fRと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。
M
mfang 已提交
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
.RE
.SH "デバッグ対象のプロセスに転送されるオプション"
.PP
\-v \-verbose[:\fIclass\fR|gc|jni]
.RS 4
冗長モードにします。
.RE
.PP
\-D\fIname\fR=\fIvalue\fR
.RS 4
システム・プロパティを設定します。
.RE
.PP
\-classpath \fIdir\fR
.RS 4
クラスを検索するための、コロンで区切って指定されたディレクトリのリスト。
.RE
.PP
\-X\fIoption\fR
.RS 4
非標準ターゲットJVMオプションです。
.RE
342
.SH "関連項目"
M
mfang 已提交
343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
javac(1)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
java(1)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
javah(1)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
javap(1)
.RE
.br
'pl 8.5i
'bp