Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

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

Java コードとネイティブコードが混在するアプリケーションのデバッグに使用する dbx コマンドは、次のように分類することができます。

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

dbx コマンドにおける Java の式の評価

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

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

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

データを調べる以上の操作を行う式に対して正確な値解釈を依存します。

dbx コマンドが利用する静的および動的情報

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

一部 Java クラスとその属性に、クラスパスからアクセスできないことがあります。dbx はそうしたクラスを調べて、ステップ実行することができ、式パーサーはそれらが読み込まれてからアクセスできるようになります。ただし、dbx が収集する情報は一時的な情報であり、JVM ソフトウェアが終了すると利用できなくなります。

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

構文と機能が 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 のデバッグとネイティブコードのデバッグで構文が異なる dbx コマンドをまとめています。これらのコマンドは、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 モードでのみ有効なコマンド

ここでは、Java または JNI モードでのみ有効な dbx コマンドをまとめています。

コマンド  

機能  

java

dbx が JNI モードのときに、指定したコマンドの Java 版を実行するよう指示するときに使用します。

javaclasses

コマンドが入力された時点で dbx が認識しているすべての Java クラス名を表示します。

joff

Java または JNI モードからネイティブモードに dbx を切り替えます。

jon

ネイティブモードから Java モードに dbx を切り替えます。

jpkgs

コマンドが入力された時点で dbx が認識しているすべての Java パッケージ名を表示します。

native

Java モードのときに、指定したコマンドのネイティブ版を実行するよう指示するときに使用します。