Oracle® Developer Studio 12.5: dbx コマンドによるデバッグ

印刷ビューの終了

更新: 2016 年 6 月
 
 

Java モードにおける dbx コマンドの使用法

どの分類にも属さないコマンドはすべてネイティブモードでのみ動作します。

dbx コマンドでの Java の式の評価

    ほとんどの dbx コマンドで使用される Java の式の評価機能は、次の構造をサポートしています。

  • すべてのリテラル

  • すべての名前とフィールドアクセス

  • this および super

  • 配列アクセス

  • キャスト

  • 条件付きの二項演算

  • メソッド呼び出し

  • その他の単項/二項演算

  • 変数またはフィールドへの値の代入

  • instanceof 演算子

  • 配列の長さ演算子

    サポートされていない構造は次のとおりです。

  • 修飾された this (<ClassName>.this など)

  • クラスのインスタンス作成式

  • 配列作成式

  • 文字列連結演算子

  • 条件演算子 ?:

  • 複合代入演算子 (x += 3 など)

Java アプリケーションの状態を調べるうえで特に有用なのは、IDE または dbxtool の監視機能を利用する方法です。

単なるデータの検査を超える操作を行う式では、正確な値の解釈に依存しないでください。

dbx コマンドによって使用される静的および動的情報

通常、Java アプリケーションに関する情報の多くは、JVM ソフトウェアが起動してからのみ利用でき、終了すると利用できなくなります。ただし、Java アプリケーションのデバッグでは、dbx は、JVM ソフトウェアを起動する前にシステムクラスパスとユーザークラスパスに含まれているクラスファイルと JAR ファイルから必要な情報の一部を収集します。これらの情報により、dbx はユーザーがアプリケーションを実行する前に、ブレークポイントでより適切なエラー検査を実行できます。

一部の Java クラスとその属性には、クラスパス経由でアクセスできないことがあります。dbx は、これらのクラスを検査したり、ステップ実行したりできます。また、式解析プログラムは、これらのクラスが実行時にロードされたあと、アクセスできるようになります。ただし、dbx が収集する情報は一時的な情報であり、JVM ソフトウェアが終了すると利用できなくなります。

Java アプリケーションのデバッグに dbx が必要とする情報はどこにも記録されません。このため dbx は、Java のソースファイルを読み取り、コードをデバッグしながらその情報を取得しようとします。

構文と機能が Java モードとネイティブモードで完全に同じコマンド

次の表に示されている dbx コマンドは、Java モードでネイティブモードの場合と同じ構文を持ち、同じ動作を実行します。

コマンド
機能
attach
動作中のプロセスに dbx を接続します。プログラムは停止して、デバッグの制御下に置かれます。
cont
プロセスが実行を再開します。
dbxenv
dbxenv 変数を一覧表示または設定します。
delete
ブレークポイントとその他のイベントを削除します。
down
呼び出しスタックを下方向に移動します (main の逆方向)。
dump
プロシージャまたはメソッドにローカルなすべての変数を表示します。
file
現在のファイルを表示するか、変更します。
frame
現在のスタックフレーム番号を表示するか、変更します。
handler
イベントハンドラ (ブレークポイント) を変更します。
import
dbx コマンドライブラリからコマンドをインポートします。
line
現在の行番号を表示するか、変更します。
list
ソースファイルの行を表示します。
next
ソース行を 1 行ステップ実行します (呼び出しをステップオーバー)。
pathmap
ソースファイルなどを検索するために、あるパス名を別のパス名にマップします。
proc
現在のプロセスのステータスを表示します。
prog
デバッグ対象のプログラムとその属性を管理します。
quit
dbx を終了します。
rerun
引数なしでプログラムを実行します。
runargs
ターゲットプロセスの引数を変更します。
status
イベントハンドラ (ブレークポイント) を一覧表示します。
step up
ステップアップして、現在の関数またはメソッドを出ます。
stepi
機械命令を 1 つステップ実行します (呼び出しにステップイン)。
up
呼び出し方向を上方向に移動します (main 方向)
whereami
現在のソース行を表示します。

Java モードで構文が異なる dbx コマンド

次の表に示されている dbx コマンドは、Java のデバッグのためにネイティブコードのデバッグとは異なる構文を持ち、Java モードでの動作がネイティブモードの場合とは異なります。

コマンド
ネイティブモードでの機能
Java モードでの機能
assign
プログラム変数に新しい値を代入します。
局所変数またはパラメータに新しい値を代入します。
call
手続きを呼び出します。
メソッドを呼び出します。
dbx
dbx を起動します。
dbx を起動します。
debug
指定されたアプリケーションを読み込んで、アプリケーションのデバッグを開始します。
指定された Java アプリケーションを読み込んで、クラスファイルの有無を調べ、アプリケーションのデバッグを開始します。
detach
dbx の制御下にあるターゲットプロセスを解放します。
dbx の制御下にあるターゲットプロセスを解放します。
display
すべての停止点で式を評価して出力します。
あらゆる停止点で式か局所変数、パラメータを評価して表示します。
files
正規表現に一致するファイル名を一覧表示します。
dbx が認識しているすべての Java ソースファイルを一覧表示します。
func
現在の関数を表示するか、変更します。
現在のメソッドを表示するか、変更します。
next
ソースを 1 行ステップ実行します (呼び出しをステップオーバー)。
ソースを 1 行ステップ実行します (呼び出しをステップオーバー)。
print
式の値を表示します。
式、局所変数、またはパラメータの値を出力します。
run
引数を付けてプログラムを実行します。
引数を付けてプログラムを実行します。
step
ソースを 1 行か 1 文ステップ実行します (呼び出しにステップイン)。
ソースを 1 行か 1 文ステップ実行します (呼び出しにステップイン)。
stop
ソースレベルのブレークポイントを設定します。
ソースレベルのブレークポイントを設定します。
thread
現在のスレッドを表示するか、変更します。
現在のスレッドを表示するか、変更します。
threads
すべてのスレッドを一覧表示します。
すべてのスレッドを一覧表示します。
trace
実行されたソース行か関数呼び出し、変数の変更を表示します。
実行されたソース行か関数呼び出し、変数の変更を表示します。
undisplay
display コマンドを元に戻します。
display コマンドを元に戻します。
whatis
式の型または型の宣言を表示します。
識別子の宣言を表示します。
when
指定されたイベントが発生したときにコマンドを実行します。
指定されたイベントが発生したときにコマンドを実行します。
where
呼び出しスタックを表示します。
呼び出しスタックを表示します。

Java モードでのみ有効なコマンド

次の表に示されている dbx コマンドは、Java モードまたは JNI モードでのみ有効です。

コマンド
機能
java
dbx が JNI モードのときに、指定したコマンドの Java 版を実行するよう指示するときに使用します。
jclasses
コマンドが入力された時点で dbx が認識しているすべての Java クラス名を表示します。
joff
Java または JNI モードからネイティブモードに dbx を切り替えます。
jon
ネイティブモードから Java モードに dbx を切り替えます。
jpkgs
コマンドが入力された時点で dbx が認識しているすべての Java パッケージ名を表示します。
native
Java モードのときに、指定したコマンドのネイティブ版を実行するよう指示するときに使用します。