名 前
jdb − Java デ バ ッ ガ
形 式
jdb [ options ] [ class ] [ arguments ]
パ ラ メ ー タ
options |
コ マ ン ド 行 オ プ シ ョ ン |
|||
class |
デ バ ッ グ を 開 始 す る ク ラ ス 名 |
|||
arguments |
ク ラ ス の main() メ ソ ッ ド に 渡 さ れ る 引 数 |
機 能 説 明
Java デ バ ッ ガ の jdb は 、 Java ク ラ ス 用 の 単 純 な コ マ ン ド 行 デ バ ッ ガ で す 。 Java Platform Debugger Architecture を 画 面 に 表 示 し な が ら 実 行 し 、 ロ ー カ ル ま た は リ モ ー ト の Java Virtual Machine の 検 査 と デ バ ッ グ を 行 う こ と が で き ま す 。
jdb セ
ッ シ ョ ン の 開
始
jdb セ ッ シ ョ ン を
開 始 す る に は
さ ま ざ ま な 方
法 が あ り ま す
。 も っ と も 頻
繁 に 使 わ れ る
の は 、 ア プ リ
ケ ー シ ョ ン の
メ イ ン ク ラ ス
を デ バ ッ グ し
て 、 jdb か ら 新
し く Java Virtual Machine (VM) を
起 動 す る 方 法
で す 。 コ マ ン
ド 行 で 、 java(1) の
代 わ り に jdb コ
マ ン ド を 入 力
し ま す 。 た と
え ば 、 ア プ リ
ケ ー シ ョ ン の
メ イ ン ク ラ ス
が MyClass の 場 合 は
、 次 の コ マ ン
ド を 使 用 し て jdb
環 境 で デ バ ッ
グ し ま す 。
example% jdb MyClass
こ の よ う に し て 起 動 す る と 、 jdb は 2 つ 目 の Java VM を 呼 び 出 し 、 指 定 さ れ た パ ラ メ ー タ を 渡 し 、 指 定 さ れ た ク ラ ス を ロ ー ド し ま す 。 そ の あ と 、 ク ラ ス の 最 初 の 命 令 を 実 行 す る 前 に VM を 停 止 さ せ ま す 。
jdb の も う 1 つ の 使 用 方 法 は 、 す で に 起 動 し て い る Java VM に jdb を 接 続 す る こ と で す 。 jdb を 使 用 し て デ バ ッ グ す る VM は 、 次 の オ プ シ ョ ン を 使 用 し て 起 動 し な け れ ば な り ま せ ん 。
た と え ば 、 次 の コ マ ン ド は MyClass ア プ リ ケ ー シ ョ ン を 実 行 し 、 後 で jdb を 接 続 で き る よ う に し ま す 。
example% jdb
−Xdebug \
−Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
Class
次 の コ マ ン ド で jdb を VM に 接 続 で き ま す 。
example% jdb −attach 8000
こ の と き 、 jdb は 新 し い VM を 起 動 す る の で は な く 、 既 存 の VM に 接 続 す る の で 、 jdb コ マ ン ド 行 で MyClass を 指 定 し な い こ と に 注 意 し て く だ さ い 。
こ れ 以 外 に も デ バ ッ ガ (jdb) を VM に 接 続 す る 方 法 は た く さ ん あ り 、 jdb は そ の す べ て の 方 法 を サ ポ ー ト し て い ま す 。 こ の よ う な 接 続 オ プ シ ョ ン に つ い て は 、 Java Platform Debugger Architecture の マ ニ ュ ア ル を 参 照 し て く だ さ い 。
jdb 基
本 コ マ ン ド
以 下 に jdb 基 本
コ マ ン ド の 一
覧 を 示 し ま す
。 Java デ バ ッ ガ で
使 用 可 能 な そ
の 他 の コ マ ン
ド は 、 help コ マ
ン ド で 表 示 で
き ま す 。
な お 局 所 (ス タ ッ ク ) 変 数 を ブ ラ ウ ズ す る に は 、 そ の ク ラ ス が javac −g オ プ シ ョ ン で コ ン パ イ ル さ れ て い る 必 要 が あ り ま す 。
cont |
ブ レ ー ク ポ イ ン ト 、 例 外 、 ま た は ス テ ッ プ 実 行 の あ と で 、 デ バ ッ グ 中 の ア プ リ ケ ー シ ョ ン の 実 行 を 継 続 し ま す 。 | ||
dump |
プ リ ミ テ ィ ブ 値 の 場 合 に は 、 こ の コ マ ン ド は print と 同 じ で す 。 オ ブ ジ ェ ク ト の 場 合 に は 、 オ ブ ジ ェ ク ト 内 に 定 義 さ れ て い る 各 フ ィ ー ル ド の 現 在 の 値 を 出 力 し ま す 。 static フ ィ ー ル ド と instance フ ィ ー ル ド を 出 力 し ま す 。 |
dump コ マ ン ド は 、 print コ マ ン ド と 同 じ 式 を サ ポ ー ト し ま す 。
help ま た は ? |
jdb の コ マ ン ド の 中 で も っ と も 重 要 な の が 、 こ の help コ マ ン ド で す 。 利 用 可 能 な コ マ ン ド の 一 覧 を 、 各 コ マ ン ド の 簡 単 な 説 明 つ き で 表 示 し ま す 。 | ||
|
Java オ ブ ジ ェ ク ト お よ び プ リ ミ テ ィ ブ 値 を 表 示 し ま す 。 プ リ ミ テ ィ ブ 型 の 変 数 ま た は フ ィ ー ル ド の 場 合 に は 、 実 際 の 値 を 出 力 し ま す 。 オ ブ ジ ェ ク ト の 場 合 に は 、 短 い 説 明 を 出 力 し ま す 。 オ ブ ジ ェ ク ト に つ い て は 、 以 降 の dump コ マ ン ド の 説 明 を 参 照 し て く だ さ い 。 |
print は 、 メ ソ ッ ド の 呼 び 出 し を 含 む 多 数 の 簡 単 な Java 式 を サ ポ ー ト し ま す 。 次 に 例 を 示 し ま す 。
• |
print MyClass.myStaticField | ||
• |
print myObj.myInstanceField | ||
• |
print i + j + k ( i、 j、 お よ び k は プ リ ミ テ ィ ブ で あ り 、 フ ィ ー ル ド ま た は 局 所 変 数 の い ず れ か ) | ||
• |
print myObj.myMethod() ( myMethod が null 以 外 を 返 す 場 合 ) | ||
• |
print new java.lang.String("Hello").length() | ||
thread |
現 在 の ス レ ッ ド を 選 択 し ま す 。 多 く の jdb コ マ ン ド は 、 現 在 の ス レ ッ ド の 設 定 に 基 づ い て 実 行 さ れ ま す 。 ス レ ッ ド は 、 threads コ マ ン ド で 説 明 す る ス レ ッ ド イ ン デ ッ ク ス と と も に 指 定 し ま す 。
threads |
現 在 実 行 中 の ス レ ッ ド を 一 覧 表 示 し ま す 。 ス レ ッ ド ご と に 、 名 前 と 現 在 の 状 態 、 お よ び ほ か の コ マ ン ド に 使 用 で き る イ ン デ ッ ク ス を 出 力 し ま す 。 次 に 例 を 示 し ま す 。 |
4. (java.lang.Thread)0x1 main running
こ の 例 で は 、 ス レ ッ ド イ ン デ ッ ク ス は 4 で あ り 、 ス レ ッ ド は java.lang.Thread の イ ン ス タ ン ス で す 。 ス レ ッ ド の 名 前 は 「 main 」 で あ り 、 現 在 実 行 中 で す 。
run |
jdb を 起 動 し て 必 要 な ブ レ ー ク ポ イ ン ト を 設 定 し た あ と に 、 こ の コ マ ン ド を 使 用 し て 、 デ バ ッ グ す る ア プ リ ケ ー シ ョ ン の 実 行 を 開 始 し ま す 。 こ の コ マ ン ド は 、 デ バ ッ グ す る ア プ リ ケ ー シ ョ ン を jdb か ら 起 動 す る と き に だ け 使 用 で き ま す 。 既 存 の VM に 接 続 す る 場 合 と は 異 な り ま す 。 | ||
where |
引 数 の な い where コ マ ン ド は 、 現 在 の ス レ ッ ド ( thread コ マ ン ド で 設 定 ) の ス タ ッ ク を ダ ン プ し ま す 。 where all と 指 定 す る と 、 現 在 の ス レ ッ ド グ ル ー プ に あ る 全 ス レ ッ ド の ス タ ッ ク を ダ ン プ し ま す 。 where threadindex と 指 定 す る と 、 threadindex が 示 す ス レ ッ ド の ス タ ッ ク だ け を ダ ン プ し ま す 。 現 在 の ス レ ッ ド が (ブ レ ー ク ポ イ ン ト な ど の イ ベ ン ト や suspend コ マ ン ド で ) 中 断 し て い る 場 合 、 print コ マ ン ド や dump コ マ ン ド を 使 用 す れ ば 、 局 所 変 数 や フ ィ ー ル ド を 表 示 で き ま す 。 ど の ス タ ッ ク フ レ ー ム を 現 在 の フ レ ー ム に す る か は 、 up お よ び down コ マ ン ド で 選 択 で き ま す 。 |
ブ
レ ー ク ポ イ ン
ト 用 コ マ ン ド
jdb で は 、 ブ レ
ー ク ポ イ ン ト
を 行 番 号 で 、
ま た は メ ソ ッ
ド の 最 初 の 命
令 で 設 定 で き
ま す 。 次 に 例
を 示 し ま す 。
stop at MyClass:22 |
MyClass が 含 ま れ る ソ ー ス フ ァ イ ル の 22 行 目 の 最 初 の 命 令 に ブ レ ー ク ポ イ ン ト を 設 定 す る |
stop in java.lang.String.length
java.lang.String.length メ ソ ッ ド の 最 初 に ブ レ ー ク ポ イ ン ト を 設 定 す る
stop in MyClass.init |
init は MyClass コ ン ス ト ラ ク タ を 識 別 す る | ||
stop in MyClass.clinit |
clinit は MyClass の 静 的 な 初 期 化 コ ー ド を 識 別 す る |
メ ソ ッ ド が オ ー バ ー ロ ー ド さ れ る 場 合 に は 、 メ ソ ッ ド の 引 数 の 型 も 指 定 し て 、 ブ レ ー ク ポ イ ン ト に 対 し て 適 切 な メ ソ ッ ド が 選 択 さ れ る よ う に し な け れ ば な り ま せ ん 。 た と え ば 、 次 の よ う に 指 定 し ま す 。
MyClass.myMethod(int,java.lang.String)
ま た は
MyClass.myMethod()
clear コ マ ン ド は 、 「 clearMyClass:45 」 の よ う な 構 文 を 使 用 し て ブ レ ー ク ポ イ ン ト を 削 除 し ま す 。 引 数 を 指 定 し な い で clear コ マ ン ド を 使 用 す る と 、 現 在 設 定 さ れ て い る す べ て の ブ レ ー ク ポ イ ン ト が 表 示 さ れ ま す 。 cont コ マ ン ド で 実 行 が 継 続 し ま す 。
コ
マ ン ド の ス テ
ッ プ 実 行
step コ マ ン ド は
、 現 在 の ス タ
ッ ク フ レ ー ム
ま た は 呼 び 出
さ れ た メ ソ ッ
ド 内 で 、 次 の
行 を 実 行 し ま
す 。 next コ マ ン
ド は 、 現 在 の
ス タ ッ ク フ レ
ー ム の 次 の 行
を 実 行 し ま す
。
例
外 処 理 用 コ マ
ン ド
ス ロ ー し て い
る ス レ ッ ド の
呼 び 出 し ス タ
ッ ク 上 の ど こ
に も catch 文 が な い
よ う な 例 外 が
発 生 す る と 、 VM
は 通 常 、 例 外
ト レ ー ス を 出
力 し て 終 了 し
ま す 。 た だ し
、 jdb 環 境 で 実
行 し て い る 場
合 は 、 こ の よ
う な 例 外 が 発
生 す る と jdb に
制 御 が 戻 り ま
す 。 次 に 、 jdb
を 使 用 し て 例
外 の 原 因 を 診
断 し ま す 。
catch |
デ バ ッ グ 中 の ア プ リ ケ ー シ ョ ン は 他 の 例 外 が ス ロ ー さ れ た と こ ろ で 停 止 し ま す 。 次 に 例 を 示 し ま す 。 |
catch java.io.FileNotFoundException
ま た は
catch mypackage.BigTroubleException
例 外 が 指 定 し た ク ラ ス (ま た は 、 サ ブ ク ラ ス ) の イ ン ス タ ン ス で あ る 場 合 、 ア プ リ ケ ー シ ョ ン は ス ロ ー さ れ た と こ ろ で 停 止 し ま す 。
ignore |
以 前 の catch コ マ ン ド の 効 果 を 無 効 に し ま す 。 な お 、 こ の 指 定 に よ っ て 例 外 を 無 視 す る の は デ バ ッ ガ だ け で あ り 、 デ バ ッ グ さ れ た VM は 無 視 し ま せ ん 。 |
オ プ シ ョ ン
コ
マ ン ド 行 で Java ア
プ リ ケ ー シ ョ
ン 起 動 ツ ー ル
の 代 わ り に jdb
を 使 用 す る 場
合 、 jdb
は 、 −D、
−classpath、
−Xoptionな ど 、
java(1) コ マ ン ド と
同 じ オ プ シ ョ
ン を 多 数 使 用
で き ま す 。
jdb
は 、 そ の ほ か
に 次 の オ プ シ
ョ ン も 使 用 で
き ま す 。
−sourcepath dir1:dir2:...
指 定 さ れ た パ ス で 、 ソ ー ス フ ァ イ ル を 検 索 し ま す 。 こ の オ プ シ ョ ン が 指 定 さ れ て い な い 場 合 は 、 デ フ ォ ル ト パ ス の 「 .」 を 検 索 し ま す 。
−attach address
デ フ ォ ル ト の 接 続 機 構 を 使 用 し て 、 す で に 実 行 中 の VM に デ バ ッ ガ を 接 続 し ま す 。
−launch |
デ バ ッ グ す る ア プ リ ケ ー シ ョ ン を jdb の 起 動 後 た だ ち に 起 動 し ま す 。 こ の オ プ シ ョ ン を 使 用 す る と 、 run コ マ ン ド を 使 用 す る 必 要 は あ り ま せ ん 。 デ バ ッ グ す る ア プ リ ケ ー シ ョ ン は 、 起 動 後 、 最 初 の ア プ リ ケ ー シ ョ ン ク ラ ス が ロ ー ド さ れ る 直 前 に 停 止 し ま す 。 そ の 時 点 で 、 必 要 な ブ レ ー ク ポ イ ン ト を 設 定 で き ま す 。 実 行 を 継 続 す る に は cont コ マ ン ド を 使 用 し ま す 。 | ||
−J option |
option を Java 仮 想 マ シ ン に 渡 し ま す 。 こ こ で 、 option は 、 Java ア プ リ ケ ー シ ョ ン 起 動 プ ロ グ ラ ム java(1) の マ ニ ュ ア ル ペ ー ジ で 説 明 さ れ て い る オ プ シ ョ ン の 1 つ で す 。 た と え ば 、 −J-Xms48m は 、 起 動 時 に 使 用 す る メ モ リ を 48M バ イ ト に 設 定 し ま す 。 −J が 基 本 に す る 仮 想 マ シ ン に オ プ シ ョ ン を 渡 す こ と は 、 共 通 の 規 約 で す 。 |
こ れ 以 外 に も 、 デ バ ッ ガ を デ バ ッ グ さ れ る VM に 接 続 す る た め の 代 替 機 構 用 の オ プ シ ョ ン が サ ポ ー ト さ れ て い ま す 。 こ の よ う な 接 続 の 代 替 機 構 に つ い て は 、 Java Platform Debugger Architecture の マ ニ ュ ア ル を 参 照 し て く だ さ い 。