Subject: jdbの使い方
From: <Microsoft Internet Explorer 5 で保存する>
Date: Fri, 23 Nov 2001 19:56:43 +0900

jdbの使い方

Create : Oct. 31. 1997
Last Update : Nov. 23, 1998

Java
Strikes!に戻る

JDKには"jdb"というデバッガが付いてきます。
しかし、このコマンドでデバッグするのは一苦労です。ソースコードにSystem.err.println()を埋め込んだほうが簡単です。

私としては、コマンドラインで一つ一つ命令を与えていくデバッグは苦痛以外の何者でもないのですが、タダで手に入るデバッガはこれしかないので仕方なく使ってみました。

使ったことがない人も多いと思うので、ここに簡単な使い方を書いておきます。でも一生使わない人の方が多いかもしれませんね。

目次

コンパイル

起動

ブレークポイントを設定する

最初のブレークポイントまで実行する

ローカル変数の一覧を調べてみる

もっと詳しく変数の内容を調べてみる

次のブレークポイントまで実行する

一行だけ実行してみる

一処理だけ実行してみる

メソッドの終わりまで実行してみる

もういやになったのでjdbを終了する

１．コンパイル

デバッグ対象となるプログラムは、

javac -g ソースファイル

としてコンパイルしておきます。
-g
オプションをつけなかったクラスにもjdbは使用できますが、ほとんど役に立たないでしょう。

２．起動

jdb [デバッグ対象となるクラス]

起動にやたら時間がかかりますが、じっと待っていると起動します。

３．ブレークポイントを設定する

stop at
クラス名:行数
または、

stop in
クラス名:メソッド名
と入力して、あらかじめブレークポイントを設定しておきましょう。

この作業がもうすでに苦痛です。ソースコードと比べながらコマンドをたたかなければいけないのですから。

４．最初のブレークポイントまで実行する

run

と入力すると実行を開始し、ブレークポイントでストップします。

５．ローカル変数の一覧を調べてみる

locals

と入力するとローカル変数の一覧が表示されます。

６．もっと詳しく変数の内容を調べてみる

dump 変数名

と入力すると変数の内容が表示されます。

dump this

と入力すると、クラス（インスタンス）のメンバ変数（private変数も含む)を見ることが出来ます。

変数名を正確にタイプしなければいけないので、長い名前をつけていると後悔すること請け合いです。

７．次のブレークポイントまで実行する

cont

で次のブレークポイントまで実行されます。

８．一行だけ実行してみる

next

で一行だけ実行されます。
このあたりでもうイヤになっているはずです。お店にいって良いJavaデバッガを購入しましょう。

９．一処理だけ実行してみる

一行に複数の処理が定義されている場合、例えば、

InputStream is = someMethod( someMethod2() );
なんて書いてある場合、

step

と入力すると一つの処理だけが行われます。（上記例では、someMethod2()
の始まりで止まります）そろそろ指が疲れてきましたね。

１０．メソッドの終わりまで実行してみる

間違ってJavaコアクラスの内部(java.lang.String.length() の中など）に突入してしまったら、

step up

と入力して脱出しましょう。

１１．もういやになったのでjdbを終了する

デバッグに嫌気が差したら、

quit

と入力するといつでもデバッグを終了できます。

Java
Strikes! に戻る

Copyright(C) 1997-1998 FreeBeans