「Java」JDK同梱ツール jdb でデバッグ
Java のデバッグには、今まで Eclipse や Netbeans についてるものしか使ったことなかったけど、
JDK 同梱の jdb なるツールでもデバッグ可能みたい。
あんまり使う場面もないだろうけど、ちょっと調べてみたので、その時のメモ。
http://docs.oracle.com/javase/jp/6/technotes/tools/windows/jdb.html
意味のないコードだけど、以下のようなものを用意。
class jdbTest { int id = 1; public static void main(String[] args) { String name; jdbTest jt = new jdbTest(); name = jt.setName("hoge"); System.out.println("id : " + jt.id + " name : " + name); } public String setName(String s) { return s; } }
2. ソースコードをコンパイルする
g オプションを指定してコンパイルする。これでデバッグの情報が生成されるみたい。
http://docs.oracle.com/javase/jp/6/technotes/tools/windows/javac.html
javac -g jdbTest.java
3. jdb を起動する
jdb jdbTest
4. 処理を止めたい箇所にブレークポイントを設定する
stop at jdbTest:13
5. 処理を実行する
run jdbTest
すると、4 で設定したブレークポイントで処理が止まる。
VM が起動しました: 保留した ブレークポイント jdbTest:13 を設定しました ブレークポイントのヒット: "スレッド=main", jdbTest.main(), line=13 bci=15 13 System.out.println("id : " + jt.id + " name : " + name); main[1]
この状態で locals でローカル変数、print [変数名] で変数の値とかが確認できる。
main[1] locals メソッド引数: args = instance of java.lang.String[0] (id=364) ローカル変数: jt = instance of jdbTest(id=365) name = "hoge"
main[1] print name name = "hoge"
cont と入力すると処理を再開できる。
簡単ですが以上。