Manpages

名 前

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 コ マ ン ド で す 。 利 用 可 能 な コ マ ン ド の 一 覧 を 、 各 コ マ ン ド の 簡 単 な 説 明 つ き で 表 示 し ま す 。

print

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

initMyClass コ ン ス ト ラ ク タ を 識 別 す る

stop in MyClass.clinit

clinitMyClass の 静 的 な 初 期 化 コ ー ド を 識 別 す る

メ ソ ッ ド が オ ー バ ー ロ ー ド さ れ る 場 合 に は 、 メ ソ ッ ド の 引 数 の 型 も 指 定 し て 、 ブ レ ー ク ポ イ ン ト に 対 し て 適 切 な メ ソ ッ ド が 選 択 さ れ る よ う に し な け れ ば な り ま せ ん 。 た と え ば 、 次 の よ う に 指 定 し ま す 。

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 の マ ニ ュ ア ル を 参 照 し て く だ さ い 。

関 連 項 目

java(1)javac(1)javadoc(1)javah(1)javap(1)