|
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 |