Java コードとネイティブコードが混在するアプリケーションのデバッグに使用する dbx コマンドは、次のように分類することができます。
受け付ける引数と機能が Java/JNI モードとネイティブモードで完全に同じコマンド (「構文と機能が Java モードとネイティブモードで完全に同じコマンド」を参照)。
Java または JNI モードとネイティブモードの間で有効な引数が異なるコマンド (「Java モードで構文が異なる dbx コマンド」を参照)。
Java または JNI モードでのみ有効なコマンド (「Java モードでのみ有効なコマンド」を参照)。
どの分類にも属さないコマンドはすべてネイティブモードでのみ動作します。
大部分の dbx コマンドで使用される Java の式の評価機能は次の構造をサポートしています。
すべてのリテラル
すべての名前とフィールドアクセス
this および super
配列アクセス
キャスト
条件付きの二項演算
メソッドの呼び出し
その他の単項/二項演算
変数またはフィールドへの値の代入
instanceof 演算子
配列の長さ演算子
サポートされていない構造は次のとおりです。
修飾付きの this (例: <ClassName>.this)
クラスのインスタンス作成式
配列の作成式
文字列連結演算子
条件演算子 ?::
複合代入演算子 (例 : x += 3)
Java アプリケーションの状態を調べるうえで特に有用なのは、IDE または dbxtool の監視機能を利用する方法です。
データを調べる以上の操作を行う式に対して正確な値解釈を依存します。
通常、Java アプリケーションに関する情報の多くは、JVM ソフトウェアが起動してからのみ利用でき、終了すると利用できなくなります。ただし、Java アプリケーションのデバッグでは、dbx は、JVM ソフトウェアを起動する前にシステムクラスパスとユーザークラスパスに含まれているクラスファイルと JAR ファイルから必要な情報の一部を収集します。この情報のおかげで dbx は、アプリケーションの実行前にブレークポイントで綿密なエラー検査を行うことができます。
一部 Java クラスとその属性に、クラスパスからアクセスできないことがあります。dbx はそうしたクラスを調べて、ステップ実行することができ、式パーサーはそれらが読み込まれてからアクセスできるようになります。ただし、dbx が収集する情報は一時的な情報であり、JVM ソフトウェアが終了すると利用できなくなります。
Java アプリケーションのデバッグに dbx が必要とする情報はどこにも記録されません。このため dbx は、Java のソースファイルを読み取り、コードをデバッグしながらその情報を取得しようとします。
ここでは、構文と行う処理が Java モードとネイティブモードで完全に同じ dbx コマンドをまとめています。
コマンド |
機能 |
---|---|
attach |
動作中のプロセスに dbx を接続します。プログラムは停止して、デバッグの制御下に置かれます。 |
cont |
プロセスが実行を再開します。 |
dbxenv |
dbx 環境変数を一覧表示するか、設定します。 |
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 コマンドをまとめています。これらのコマンドは、Java モードとネイティブモードで動作が異なります。
コマンド |
ネイティブモードでの機能 |
Java モードでの機能 |
---|---|---|
assign |
プログラム変数に新しい値を代入します。 |
局所変数またはパラメータに新しい値を代入します。 |
call |
手続きを呼び出します。 |
メソッドを呼び出します。 |
dbx |
dbx を起動します。 |
dbx を起動します。 |
debug |
指定されたアプリケーションを読み込んで、アプリケーションのデバッグを開始します。 |
指定された Java アプリケーションを読み込んで、クラスファイルの有無を調べ、アプリケーションのデバッグを開始します。 |
detach |
dbx の制御下にあるターゲットプロセスを解放します。 |
dbx の制御下にあるターゲットプロセスを解放します。 |
display |
あらゆる停止点で式を評価して表示します。 |
あらゆる停止点で式か局所変数、パラメータを評価して表示します。 |
files |
正規表現に一致するファイル名を一覧表示します。 |
dbx が認識しているすべての Java ソースファイルを一覧表示します。 |
func |
現在の関数を表示するか、変更します。 |
現在のメソッドを表示するか、変更します。 |
next |
ソースを 1 行ステップ実行します (呼び出しをステップオーバー)。 |
ソースを 1 行ステップ実行します (呼び出しをステップオーバー)。 |
|
式の値を表示します。 |
式か局所変数、パラメータの値を表示します。 |
run |
引数を付けてプログラムを実行します。 |
引数を付けてプログラムを実行します。 |
step |
ソースを 1 行か 1 文ステップ実行します (呼び出しにステップイン)。 |
ソースを 1 行か 1 文ステップ実行します (呼び出しにステップイン)。 |
stop |
ソースレベルのブレークポイントを設定します。 |
ソースレベルのブレークポイントを設定します。 |
thread |
現在のスレッドを表示するか、変更します。 |
現在のスレッドを表示するか、変更します。 |
threads |
すべてのスレッドを一覧表示します。 |
すべてのスレッドを一覧表示します。 |
trace |
実行されたソース行か関数呼び出し、変数の変更を表示します。 |
実行されたソース行か関数呼び出し、変数の変更を表示します。 |
undisplay |
display コマンドを取り消します。 |
display コマンドを取り消します。 |
whatis |
式の型または型の宣言を表示します。 |
識別子の宣言を表示します。 |
when |
指定されたイベントが発生したときにコマンドを実行します。 |
指定されたイベントが発生したときにコマンドを実行します。 |
where |
呼び出しスタックを表示します。 |
呼び出しスタックを表示します。 |
ここでは、Java または JNI モードでのみ有効な dbx コマンドをまとめています。
コマンド |
機能 |
---|---|
java |
dbx が JNI モードのときに、指定したコマンドの Java 版を実行するよう指示するときに使用します。 |
javaclasses |
コマンドが入力された時点で dbx が認識しているすべての Java クラス名を表示します。 |
joff |
Java または JNI モードからネイティブモードに dbx を切り替えます。 |
jon |
ネイティブモードから Java モードに dbx を切り替えます。 |
jpkgs |
コマンドが入力された時点で dbx が認識しているすべての Java パッケージ名を表示します。 |
native |
Java モードのときに、指定したコマンドのネイティブ版を実行するよう指示するときに使用します。 |