この付録では、dbx コマンドの構文と機能について詳しく説明します。
ネイティブモードでは、assign コマンドは新しい値をプログラムの変数に代入します。Java モードでは、assign コマンドは新しい値を局所変数またはパラメータに代入します。
assign variable = expression
ここで
expression は、variable に代入される値です。
assign identifier = expression
ここで
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
expression は、有効な Java の式です。
field_name は、クラス内のフィールド名です。
identifier は this を含む局所変数またはパラメータで、現在のクラスインスタンス変数 (object_name.field_name) またはクラス (静的) 変数 (class_name.field_name) です。
object_name は、Java オブジェクトの名前です。
attach コマンドは実行中プロセスに dbx を接続し、実行を停止してプログラムをデバッグ制御下に入れます。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
プロセス ID process_id を持つプログラムのデバッグを開始します。dbx は、/proc を使用してプログラムを見つけます。
プロセス ID process_id を持つ program_name のデバッグを開始します。
プロセス ID process_id を持つ program_name のデバッグを開始します。program には &dash を指定できます。dbx は /proc を使用してプログラムを見つけます。
-r オプションを使用すると、dbx は、watch、display、 when、stop のコマンドをすべて保持します。-r オプションを使用しない場合は、delete all と undisplay 0 コマンドが暗黙に実行されます。
ここで
process_id は、動作中のプロセスのプロセス ID です。
program_name は、実行中プログラムのパス名です。
JVM ソフトウェアで libdbx_agent.so を認識できるように、libdbx_agent.so を LD_LIBRARY_PATH に追加します。libdbx_agent.so は次のようにして追加します。
Solaris OS を実行しているシステムで 32 ビットの JVM ソフトウェアを使用している場合は、/installation_directory /libdbx_agent.so を LD_LIBRARY_PATH に追加します。
Solaris OS を実行している SPARC システムで 64 ビットの JVM ソフトウェアを使用している場合は、/installation_directory /lib/v9/libdbx_agent.so を LD_LIBRARY_PATH に追加します。
Solaris OS または Linux OS を実行している x 64 システムで 64 ビットの JVM ソフトウェアを使用している場合は、/installation_directory /lib/amd64/libdbx_agent.so を LD_LIBRARY_PATH に追加します。
installation_directory は Oracle Solaris Studio ソフトウェアがインストールされている場所です。
次のように入力して、Java アプリケーションを起動します。
java -Djava.compiler=NONE -Xdebug -Xnoagent -Xrundbx_agent myclass.class
その後、次のようにプロセス ID を指定して dbx を起動し、プロセスに dbx を接続します。
dbx - process_id
bsearch コマンドは、現在のソースファイルにおいて逆方向検索を行います。ネイティブモードでだけ有効です。
現在のファイルの中で、string を逆方向で検索します。
最後の検索文字列を使用して検索を繰り返します。
ここで
string は、文字列です。
ネイティブモードでは、call コマンドは手続きを呼び出します。Java モードでは、call コマンドはメソッドを呼び出します。
call procedure ([parameters ]) [-lang language] [-resumeone]
ここで
language は呼び出す手続きの言語です。
procedure は、手続きの名前です。
parameters は、手続きのパラメータです。
call コマンドによって関数を呼び出すこともできます。戻り値を調べるには、print コマンドを使用します (「print コマンド」 参照)。
呼び出されたメソッドがブレークポイントに達することがあります。cont コマンド (「cont コマンド」を参照) を使用して実行を継続するか、pop -c (「pop コマンド」参照) を使用して呼び出しを中止するかを選択できます。呼び出しの中止は、呼び出されたメソッドがセグメント例外を引き起こした場合にも便利です。
-lang オプションは呼び出す手続きの言語で、指定した言語の呼び出し規則を使用するよう dbx に指示します。このオプションは、呼び出された手続きがデバッグ情報なしでコンパイルされ、dbx がパラメータを渡す方法が不明な場合に役立ちます。
-resumeone オプションは手続きが呼び出されたときにスレッドを 1 つだけ再開します。詳細は、「実行の再開」を参照してください。
call [class_name.|object_name .] method_name ([parameters ]}
ここで
class_name は Java クラス名で、パッケージのパス (ピリオド (.) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (ポンド記号 (#) で始まり、スラッシュ (/) やドル記号 ($) を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
object_name は、Java オブジェクトの名前です。
method_name は、Java メソッドの名前です。
parameters は、メソッドのパラメータです。
呼び出されたメソッドがブレークポイントに達することがあります。cont コマンド (「cont コマンド」を参照) を使用して実行を継続するか、pop -c (「pop コマンド」参照) を使用して呼び出しを中止するかを選択できます。呼び出しの中止は、呼び出されたメソッドがセグメント例外を引き起こした場合にも便利です。
cancel コマンドは、現在のシグナルを取り消します。このコマンドは、主として when コマンドの本体内で使用します (「when コマンド」参照)。ネイティブモードでだけ有効です。
通常、シグナルが取り消されるのは、dbx がシグナルのため停止した場合です。when コマンドがシグナルイベントに接続されている場合、そのシグナルが自動的に取り消されることはありません。cancel コマンドを使用すれば、シグナルを明示的に取り消せます。
cancel
catch コマンドは、指定のシグナルを捕獲します。ネイティブモードでだけ有効です。
シグナルを捕獲すると、プロセスがそのシグナルを受信したときに dbx がプログラムを停止します。その時点でプログラムを続行しても、シグナルがプログラムによって処理されることはありません。
捕獲するシグナルのリストを出力します。
番号が number のシグナルを捕獲します。
signal によって名前を付けられたシグナルを捕獲します。 SIGKILL を捕獲したり無視したりすることはできません。
すべてのシグナルを捕獲します。
ここで
number は、シグナルの番号です。
signal はシグナル名です。
check コマンドは、メモリーへのアクセス、メモリーリーク、メモリー使用状況をチェックし、実行時検査 (RTC) の現在状態を出力します。ネイティブモードでだけ有効です。
このコマンドによる実行時検査機能は、debug コマンドによって初期状態にリセットされます。
check -access
アクセス検査を起動します。RTC は、次のエラーを報告します。
不正解放
重複解放
境界整列を誤った解放
境界整列を誤った読み取り
境界整列を誤った書き込み
メモリー不足
配列の範囲外のメモリーからの読み取り
非割り当てメモリーからの読み取り
非初期化メモリーからの読み取り
配列の範囲外のメモリーへの書き込み
読み取り専用メモリーへの書き込み
非割り当てメモリーへの書き込み
デフォルトの場合、各アクセスエラーが検出されるとプロセスが停止されます。このデフォルト動作を変更するには、dbx 環境変数 rtc_auto_continue を使用します。on が設定されている場合、アクセスエラーはファイルに記録されます (ファイル名は dbx 環境変数 rtc_error_log_file_name によって制御します)。「dbxenv コマンド」を参照してください。
デフォルトの場合、それぞれのアクセスエラーが報告されるのは、最初に発生したときだけです。この動作を変更するには、dbx 環境変数 rtc_auto_suppress を使用します (この変数のデフォルト値は on です)。「dbxenv コマンド」を参照してください。
check -leaks [-frames n] [-match m]
リーク検査をオンにします。RTC は、次のエラーを報告します。
メモリーリークの可能性 - 唯一のポインタがブロック中央を指す。
メモリーリークの可能性 - ブロックを指すポインタがレジスタ内にのみ存在する。
メモリーリーク - ブロックを指すポインタがない。
リーク検査がオンの場合、プログラムが存在していれば自動リークレポートが作成されます。このとき、可能性のあるリークを含むすべてのリークが報告されます。デフォルトの場合、簡易レポートが作成されます (dbx 環境変数 rtc_mel_at_exit によって制御します)。ただし、リークレポートをいつでも要求することができます (「showleaks コマンド」を参照)。
-frames n は、リーク報告時に最大 n 個のスタックフレームが表示されることを意味します。-match m は、複数のリークをまとめます。2 個以上のリークに対する割り当て時の呼び出しスタックが n 個のフレームに一致するとき、これらのリークは 1 つのリークレポートにまとめて報告されます。
n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は、C++ の場合は 3 で、それ以外は 2 です。
check -memuse [-frames n] [-match m]
-memuse オプションは -leaks オプションと同じような動作をし、プログラム終了時、使用中のブロックのレポート (biu) も有効にします。デフォルトの場合、簡易使用中レポートが生成されます (dbx 環境変数 rtc_biu_at_exit によって制御します)。プログラ ム実行中、プログラムの中でメモリーが割り当てられた場所をいつでも調べることができます (「showmemuse コマンド」 参照)。
-frames n は、メモリーの使用状況とリークを報告するときに最大 n 個のスタックフレームが表示されることを意味します。-match m は、複数のリークをまと めます。2 個以上のリークに対する割り当て時の呼び出しスタックが n 個のフレームに一致するとき、これらのリークは 1 つのリークレポートにまとめて報告されます。
n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は、C++ の場合は 3 で、それ以外は 2 です。check -leaks も参照してください。
check -all [-frames n] [-match m]
check -access および check -memuse [-frames n] [-match m] と同じです。
dbx 環境変数 rtc_biu_at_exit の値は check -all によって変更されないので、デフォルトの場合、終了時にメモリー使用状況レポートは生成されません。rtc_biu_at_exit 環境変数については、「dbx コマンド」を参照してください。
check [functions] [files] [loadobjects]
functions、files、loadobjects における check -all、suppress all、unsuppress all と同じです。
ここで
functions は、1 個または複数の関数名です。
files は、1 個または複数のファイル名です。
loadobjects は、1 個または複数のロードオブジェクト名です。
これを使用することにより、特定の場所を対象として実行時検査を行えます。
RTC ですべてのエラーを検出する際、-g を付けてプログラムをコンパイルする 必要はありません。ただし、特定のエラー (ほとんどは非初期化メモリーから読み取られるもの) の正確さを保証するには、シンボリック (-g) 情報が必要となることがあります。このため、一部のエラー (a.out の rui と共有ライブラリの rui + aib + air) は、シンボリック情報を利用できないときには抑止されます。この動作は、suppress と unsuppress によって変更できます。
clear コマンドは、ブレークポイントをクリアします。ネイティブモードでだけ有効です。
引数 inclass、inmethod、infile、または infunction を付けた stop、trace、または when コマンドを使用して作成したイベントハンドラは、ブレークポイントセットを作成します。clear コマンドで指定した line がこれらのブレークポイントのどれかに一致した場合、そのブレークポイントだけがクリアされます。特定のセットに属するブレークポイントをこの方法でクリアしたあと、そのブレークポイントを再び使用可能にすることはできません。ただし、関連するイベントハンドラをいったん使用不可にしたあと使用可能にすると、すべてのブレークポイントが再設定されます。
現在の停止点にあるブレークポイントをすべてクリアします。
line にあるブレークポイントすべてをクリアします。
filename の line にあるブレークポイントをすべてクリアします。
ここで
line は、ソースコード行の番号です。
filename は、ソースコードファイルの名前です。
collector コマンドは、パフォーマンスアナライザによって分析するパフォーマンスデータを収集します。ネイティブモードでだけ有効です。
1 個または複数の collector コマンドを指定します。
終了したときに実験をアーカイブ化するモードを指定します (「collector archive コマンド」参照)。
dbx がターゲットプロセスを停止したときのサンプルの収集を制御します (「collector dbxsample コマンド」参照)。
データ収集を停止して現在の実験をクローズします (「collector disable コマンド」参照)。
コレクタを使用可能にして新規の実験をオープンします (「collector enable コマンド」参照)。
ヒープトレースデータの収集を有効または無効にします (「collector heaptrace コマンド」参照)。
ハードウェアカウンタプロファイル設定値を指定します (「collector hwprofile コマンド」参照)。
記録されているプロファイルデータの量を制限します (「collector limit コマンド」参照)。
MPI トレースデータの収集を有効または無効にします (「collector mpitrace コマンド」参照)。
パフォーマンスデータの収集は停止しますが、実験はオープン状態のままとします (「collector pause コマンド」参照)。
呼び出しスタックプロファイルデータを収集するための設定値を指定します (「collector profile コマンド」参照)。
一時停止後、パフォーマンスデータの収集を開始します (「collector resume コマンド」参照)。
標本設定値を指定します (「collector sample コマンド」参照)。
現在のコレクタ設定値を表示します (「collector show コマンド」参照)。
現在の実験に関するステータスを照会します (「collector status コマンド」参照)。
ファイルの制御と設定値を実験します (「collector store コマンド」参照)。
スレッド同期待ちトレースデータの設定値を指定します (「collector synctrace コマンド」参照)。
スレッドアナライザデータ収集の設定値を指定します (「collector tha コマンド」参照)。
データ収集に使用される libcollector.so のバージョンを 報告します (「collector version コマンド」参照)。
ここで
options は、各コマンドで指定できる設定値です。
データの収集を開始するには、collector enable と入力します。
データ収集を停止するには、collector disable と入力します。
collector archive コマンドは、実験が終了したときに使用するアーカイブモードを指定します。
デフォルトでは通常のアーカイブが使用されます。アーカイブしない場合は、off を指定します。ロードオブジェクトを実験にコピーするには、copy を指定します。
collector dbxsample コマンドは、プロセスが dbx によって停止された場合に、標本を記録するかどうかを指定します。
デフォルトでは、プロセスが dbx によって停止された場合に標本を収集します。収集しない場合は、off を指定します。
collector disable コマンドは、データ収集を停止して現在の実験をクローズします。
collector disable
collector enable コマンドは、コレクタを使用可能にして新規の実験をオープンします。
collector enable
collector heaptrace コマンドは、ヒープのトレース (メモリーの割り当て) データの収集オプションを指定します。
デフォルトでは、ヒープのトレースデータは収集されません。このデータを収集するには、on を指定します。
collector hwprofile コマンドは、ハードウェアカウンタオーバーフロープロファイルデータ収集のオプションを指定します。
デフォルトの場合、ハードウェアカウンタオーバーフロープロファイルデータは収集されません。このデータを収集するには、on を指定します。
利用できるカウンタのリストを出力します。
ハードウェアカウンタ名と間隔を指定します。
ここで
name は、ハードウェアカウンタの名前です。
interval は、ミリ秒単位による収集間隔です。
name2 は、第 2 ハードウェアカウンタの名前です。
interval2 は、ミリ秒単位による収集間隔です。
ハードウェアカウンタはシステム固有であるため、どのようなカウンタを利用できるかはご使用のシステムによって異なります。多くのシステムでは、ハードウェアカウンタオーバーフロープロファイル機能をサポートしていません。こういったマシンの場合、この機能は使用不可になっています。
collector limit コマンドは、実験ファイルのサイズの上限を指定します。
collector limit value
ここで
value - メガバイト単位。記録されているプロファイルデータの量を制限します。制限に達すると、それ以上のプロファイルデータは記録されませんが、実験はオープンのままで標本ポイントの記録は継続します。記録されるレコードのデフォルトの制限値は 2000M バイトです。
collector mpitrace コマンドは、MPI のトレースデータの収集オプションを指定します。
デフォルトでは、MPI のトレースデータは収集されません。このデータを収集するには、on を指定します。
collector pause コマンドはデータ収集を停止しますが、現在の実験はオープン状態のままとします。コレクタが一時停止している間、標本ポイントは記録されません。サンプルは一時停止の前に生成され、再開直後に別のサンプルが生成されます。collector resume コマンドを使用すると、データ収集を再開できます (「collector resume コマンド」参照)。
collector pause
collector profile コマンドは、プロファイルデータ収集のオプションを指定します。
プロファイルデータ収集モードを指定します。
プロファイルタイマー時間を固定ポイントまたは浮動小数点で、オプションの m (ミリ秒の場合) または u (マイクロ秒の場合) を付けて指定します。
collector resume コマンドは、collector pause コマンドによる一時停止のあと、データ収集を再開します (「collector pause コマンド」参照)。
collector resume
collector sample コマンドは、標本モードと標本間隔を指定します。
標本モードを指定します。
標本間隔を seconds 単位で指定します。
name (オプション) を指定して標本を記録します。
ここで
seconds は、標本間隔の長さです。
name は、標本の名前です。
collector show コマンドは、1 個または複数のオプションカテゴリの設定値を表示します。
すべての設定値を表示します。
すべての設定値を表示します。
すべての設定値を表示します。
呼び出しスタックプロファイル設定値を表示します。
スレッド同期待ちトレース設定値を表示します。
ハードウェアカウンタデータ設定値を表示します。
ヒープトレースデータ設定値を表示します。
実験サイズの上限を表示します。
MPI トレースデータ設定値を表示します。
標本設定値を表示します。
ストア設定値を表示します。
スレッドアナライザのデータ設定値を表示します。
collector status コマンドは、現在の実験のステータスについて照会します。
collector status
collector store コマンドは、実験が保存されているディレクトリとファイルの名前を指定します。
実験が保存されているディレクトリを指定します。
実験ファイル名を指定します。
実験グループ名を指定します。
ここで
pathname は、実験を保存するディレクトリのパス名です。
filename は、実験ファイルの名前です。
string は、実験グループの名前です。
collector synctrace コマンドは、同期待ちトレースデータの収集オプションを指定します。
デフォルトの場合、スレッド同期待ちトレースデータは収集されません。このデータを収集するには、on を指定します。
しきい値をマイクロ秒単位で指定します。デフォルト値は 100 です。
しきい値は、自動的に算出されます。
ここで
microseconds は、この値未満であるときに同期待ちイベントが破棄されるしきい値です。
デフォルトでは、スレッドアナライザのデータは収集されません。このデータを収集するには、on を指定します。
collector version コマンドは、データ収集に使用される libcollector.so のバージョンを報告します。
collector version
cont コマンドは、プロセスの実行を継続します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
実行を継続します。MT プロセスのすべてのスレッドが再開します。Ctrl-C を使用すると、プログラムの実行が停止します。
シグナル signal で実行を継続します。
継続するスレッドまたは LWP を id で指定します。
行 line で実行を継続します。アプリケーションがマルチスレッドの場合には id が必須です。
dbx の follow_fork_mode 環境変数を stop に設定した場合、このオプションを使用して後続のプロセスを選択します。both は Oracle Solaris Studio IDE でのみ有効です。
dalias コマンドは、dbx 形式の (csh 形式) 別名を定義します。ネイティブモードでだけ有効です。
(dbx alias) 現在定義されている別名をすべて一覧表示します。
別名 name の定義がある場合には、それを表示します。
name を definition の別名として定義します。definition には空白を含めることができます。セミコロンまたは改行によって定義を終端させます。
ここで
name は、別名の名前です。
definition は、別名の定義です。
dbx は、別名に通常使用される次の csh 履歴置換メタ構文を受け付けます。
!: <n>
!-<n>
!^
!$
!*
通常、! の前にはバックスラッシュを付ける必要があります。次に例を示します。
dalias goto "stop at \!:1; cont; clear"
詳細については、csh(1) マニュアルページを参照してください。
dbx コマンドは dbx を起動します。
program_name をデバッグします。
コアファイル core によって program_name をデバッグします。
プロセス ID process_id を持つ program_name をデバッグします。
プロセス ID process_id をデバッグします。dbx は、/proc によってプログラムを見つけます。
コアファイル core を使用してデバッグします。「「debug コマンド」」も参照してください。
引数 arguments を付けて program_name を実行します。異常終了した場合は program_name のデバッグを開始します。そうでない場合はそのまま終了します。
ここで
program_name は、デバッグ対象プログラムの名前です。
process_id は、動作中のプロセスのプロセス ID です。
arguments は、プログラムに渡す引数です。
options は、「オプション」に挙げられているオプションです。
program_name をデバッグします。
プロセス ID process_id を持つ program_name をデバッグします。
プロセス ID process_id をデバッグします。dbx は、/proc によってプログラムを見つけます。
引数 arguments を付けて program_name を実行します。異常終了した場合は program_name のデバッグを開始します。そうでない場合はそのまま終了します。
ここで
program_name は、デバッグ対象プログラムの名前です。
process_id は、動作中のプロセスのプロセス ID です。
arguments は、プログラム (JVM ソフトウェアではない) に渡す引数です。
options は、「オプション」に挙げられているオプションです。
ネイティブモード、Java モードともに、options には次を使用できます。
-B |
すべてのメッセージを抑止します。デバッグするプログラムの exit コードを返します。 |
-c commands |
commands を実行してから入力を要求します。 |
-C |
実行時検査ライブラリをあらかじめ読み込みます (「check コマンド」参照)。 |
-d |
-s を付けて使用した場合、読み取った file を削除します。 |
-e |
入力コマンドを表示します。 |
-f |
コアファイルが一致しない場合でも、コアファイルの読み込みを強制します。 |
-h |
dbx のヘルプを出力します。 |
-I dir |
dir を pathmap セットに追加します (「pathmap コマンド」参照)。 |
-k |
キーボードの変換状態を保存および復元します。 |
-q |
スタブの読み込みについてのメッセージの出力を抑止します。 |
-r |
プログラムを実行します。プログラムが正常に終了した場合は、そのまま終了します。 |
-R |
dbx の README ファイルを出力します。 |
-s file |
file を / current_directory/.dbxrc または $HOME/ .dbxrc の代わりに起動ファイルとして使用します。 |
-S |
初期設定ファイル /installation_directory /lib/dbxrc の読み込みを抑止します。 |
-V |
dbx のバージョンを出力します。 |
-w n |
where コマンドで n 個のフレームをスキップします。 |
-x exec32 |
64 ビット OS の実行されているシステムでデフォルトで実行される 64 ビット dbx バイナリではなく、32 ビット dbx バイナリを実行します。 |
-- |
オプションのリストの最後を示します。プログラム名がダッシュで始まる場合は、これを使用します。 |
dbxenv コマンドは、dbx 環境変数の表示や設定を行います。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
dbx 環境変数の現在の設定値を表示します。
environment_variable に setting を設定します。
ここで
environment_variable は dbx 環境変数です。
setting は、その変数の有効な設定値です。
debug コマンドは、デバッグ対象プログラムの表示や変更を行います。ネイティブモードでは、指定したアプリケーションを読み込み、アプリケーションのデバッグを開始します。Java モードでは、指定したアプリケーションを読み込み、クラスファイルが存在するかどうかを確認し、アプリケーションのデバッグを開始します。
デバッグ対象プログラムの名前と引数を出力します。
プロセスやコアなしで program_name のデバッグを開始します。
コアファイル core による program_name のデバッグを開始します。
プロセス ID process_id を持つ program_name のデバッグを開始します。
コアファイル core による program のデバッグを開始します。program_name には - を指定できます。dbx は、コアファイルから実行可能ファイルの名前を取り出そうとします。詳細については、「既存のコアファイルのデバッグ」を参照してください。
プロセス ID process_id を持つ program_name のデバッグを開始します。program_name には - を指定できます。dbx は /proc を使用してプログラムを見つけます。
コアファイルが一致しない場合でも、コアファイルの読み込みを強制します。
-r オプションを使用すると、dbx は display、trace、when、および stop コマンドをすべて保持します。-r オプションを使用しない場合は、delete all と undisplay O が暗黙に実行されます。
-clone オプションは新たな dbx プロセスの実行を開始するので、複数のプロセスを同時にデバッグできます。Oracle Solaris Studio IDE で使用する場合にのみ有効です。
何もデバッグしない dbx プロセスを新たに開始します。Oracle Solaris Studio IDE で使用する場合にのみ有効です。
program_name がダッシュで始まる場合でも、program_name のデバッグを開始します。
ここで
core は、コアファイルの名前です。
options は、「オプション」に挙げられているオプションです。
process_id は、実行中プロセスのプロセス ID です。
program_name は、プログラムのパス名です。
debug でプログラムを読み込むと、リーク検査とアクセス検査はオフになります。check コマンドを使用すれば、これらの検査を使用可能にできます (「check コマンド」参照)。
デバッグ対象プログラムの名前と引数を出力します。
プロセスなしで program_name のデバッグを開始します。
プロセス ID process_id を持つ program_name のデバッグを開始します。
プロセス ID process_id を持つ program_name のデバッグを開始します。program_name には - を指定できます。dbx は /proc を使用してプログラムを見つけます。
-r オプションを使用すると、dbx は watch、display、trace、when、stop のコマンドをすべて保持します。-r オプションを使用しない場合は、delete all と undisplay 0 が暗黙に実行されます。
-clone オプションは新たな dbx プロセスの実行を開始するので、複数のプロセスを同時にデバッグできます。Oracle Solaris Studio IDE で使用する場合にのみ有効です。
何もデバッグしない dbx プロセスを新たに開始します。Oracle Solaris Studio IDE で使用する場合にのみ有効です。
program_name がダッシュで始まる場合でも、program_name のデバッグを開始します。
ここで
file_name は、ファイルの名前です。
options は、「オプション」に挙げられているオプションです。
process_id は、動作中のプロセスのプロセス ID です。
program_name は、プログラムのパス名です。
commands を実行してから入力を要求します。
-s と併せて指定した場合に、読み込み後に file_name で指定したファイルを削除します。
入力コマンドを表示します。
directory_name を pathmap セットに追加します (「pathmap コマンド」参照)。
キーボードの変換状態を保存および復元します。
スタブの読み込みについてのメッセージの出力を抑止します。
プログラムを実行します。プログラムが正常に終了した場合は、そのまま終了します。
dbx の README ファイルを出力します。
file を current_directory /.dbxrc または $HOME/.dbxrc の代わりに起動ファイルとして使用します。
初期設定ファイル /installation_directory/lib/dbxrc の読み込みを抑止します。
dbx のバージョンを出力します。
where コマンドで n 個のフレームをスキップします。
オプションのリストの最後を示します。プログラム名がダッシュで始まる場合は、これを使用します。
delete コマンドは、ブレークポイントなどのイベントを削除します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
trace、when、または stop コマンドを任意の handler_id から削除します。非表示のハンドラを削除するには、-h オプションを付ける必要があります。
常時隠しハンドラを除き、trace コマンド、when コマンド、stop コマンドをすべて削除します。-h を指定すると、隠しハンドラも削除されます。
一時ハンドラをすべて削除します。
最後の停止を引き起こしたハンドラすべてを削除します。
ここで
handler_id は、ハンドラの識別子です。
detach コマンドは、dbx の制御からターゲットプロセスを解放します。
ターゲットから dbx を切り離し、保留状態のシグナルがある場合はそれらのシグナルを取り消します。
指定の signal を転送している間、切り離します。
dbx をターゲットから切り離してプロセスを停止状態にします。このオプションを使用すると、占有アクセスによってブロックされるほかの /proc ベースのデバッグツールを一時的に適用することができます。例については、「プロセスから dbx を切り離す」を参照してください。
ここで
signal はシグナル名です。
ターゲットから dbx を切り離し、保留状態のシグナルがある場合はそれらのシグナルを取り消します。
dis コマンドは、マシン命令を逆アセンブルします。ネイティブモードでだけ有効です。
アドレス address を始点とし、count 命令 (デフォルトは 10) を逆アセンブルします。
address1 から address2 までの命令を逆アセンブルします。
+ の値を始点とし、10 個の命令を逆アセンブルします (「examine コマンド」参照)。
ここで
address は、逆アセンブルを開始するアドレスです。デフォルトの address 値は、前にアセンブルされた最後のアドレスの次のアドレスになります。この値は、examine コマンド (「examine コマンド」参照) によって共有されます。
address1 は、逆アセンブルを開始するアドレスです。
address2 は、逆アセンブルを停止するアドレスです。
count は、逆アセンブル対象命令の数です。count のデフォルト値は 10 です。
関数のアドレスと使用した場合、関数全体を逆アセンブルします。パラメータなしで使用した場合、現在の関数に残りがあると、その残りを逆アセンブルします。
ネイティブモードでは、display コマンドはすべての停止ポイントで式を再評価して出力します。Java モードでは、display コマンドはすべての停止ポイントで式、局所変数、パラメータを評価して出力します。オブジェクト参照は、1 つのレベルに展開され、配列は項目と同様に出力されます。
式はコマンドを入力したときに現在のスコープで構文分析され、すべての停止ポイントで再評価されます。式は入力時に分析されるため、式の正確さをすぐに確認できます。
dbx を Sun Studio 12 リリース、Sun Studio 12 Update 1 リリース、または Oracle Solaris Studio 12.2 リリースの IDE で実行している場合、display expression コマンドは watch $(which expression) コマンドのように効果的に動作します。
表示されている式のリストを表示します。
式 expression, ... の値を、すべての停止ポイントで表示します。expression は入力時に分析されるため、式の正確さをすぐに確認できます。
フラグの意味については、「print コマンド」を参照してください。
ここで
expression は、有効な式です。
format は、式の出力時に使用する形式です。詳細については、「print コマンド」を参照してください。
表示される変数およびパラメータのリストを出力します。
すべての停止ポイントで、表示される変数およびパラメータ identifier, ... の値を表示します。
フラグの意味については、「print コマンド」を参照してください。
ここで
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
expression は、有効な Java の式です。
field_name は、クラス内のフィールド名です。
format は、式の出力時に使用する形式です。詳細については、「print コマンド」を参照してください。
identifier は this を含む局所変数またはパラメータで、現在のクラスインスタンス変数 (object_name.field_name) またはクラス (静的) 変数 (class_name.field_name) です。
object_name は、Java オブジェクトの名前です。
down コマンドは、呼び出しスタックを下方向に移動します (main から遠ざかる)。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
呼び出しスタックを 1 レベル下方向に移動します。
呼び出しスタックを number レベルだけ下方向に移動します。
呼び出しスタックを下方向に移動しますが、隠しフレームをとばすことはしません。
ここで
number は、呼び出しスタックレベルの数です。
dump コマンドは、手続きの局所変数すべてを出力します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
現在の手続きの局所変数すべてを出力します。
procedure の局所変数をすべて出力します。
ここで
procedure は、手続きの名前です。
edit コマンドは、ソースファイルに対して $EDITOR を起動します。ネイティブモードでだけ有効です。
dbx が Oracle Solaris Studio IDE で動作していない場合、edit コマンドは $EDITOR を使用します。そうでない場合は、該当するファイルを表示することを指示するメッセージを IDE に送信します。
現在のファイルを編集します。
指定のファイル file_name を編集します。
関数または手続き procedure が入っているファイルを編集 します。
ここで
file_name は、ファイルの名前です。
procedure は、関数または手続きの名前です。
examine コマンドは、メモリーの内容を表示します。ネイティブモードでだけ有効です。
address を始点とし、count 個の項目のメモリー内容を形式 format で表示します。
address1 から address2 までのメモリー内容 (address1、address2 を含む) を形式 format で表示します。
アドレスを (アドレスの内容ではなく) 指定の形式で表示します。
直前に表示された最後のアドレスを示す + (省略した場合と同じ) を address として使用できます。
x は、examine の事前定義別名です。
ここで
address は、メモリーの内容の表示を開始するアドレスです。デフォルトの address 値は、内容が最後に表示されたアドレスの次のアドレスになります。この値は dis コマンド (「dis コマンド」参照) によって共有されます。
address1 は、メモリーの内容の表示を開始するアドレスです。
address2 は、メモリーの内容の表示を停止するアドレスです。
count は、メモリーの内容を表示するアドレスの数です。count のデフォルト値は 1 です。
format は、メモリーアドレスの内容を表示する形式です。最初の examine コマンドのデフォルトの形式は X (16 進数) で、後続の examine コマンドに対して前の examine コマンドに指定されている形式です。次に示す値は format に対して常に有効です。
8 進数 (2 または 4 バイト)
16 進数 (2 または 4 バイト)
8 進数 (1 バイト)
文字
ワイド文字
文字列
ワイド文字列
16 進浮動小数点数 (4 バイト、6 桁の精度)
16 進浮動小数点数 (8 バイト、14 桁の精度)
F と同じです。
16 進浮動小数点数 (16 バイト、14 桁の精度)
10 進数 (4 バイト、D と同じ)
8 進数 (4 バイト、O と同じ)
16 進数 (4 バイト、X と同じ)
10 進数 (8 バイト)
8 進数 (8 バイト)
16 進数 (8 バイト)
exception コマンドは、現在の C++ 例外の値を出力します。ネイティブモードでだけ有効です。
現在の C++ 例外がある場合、その値を出力します。
-d フラグの意味については、「print コマンド」を参照してください。
exists コマンドは、シンボル名の有無をチェックします。ネイティブモードでだけ有効です。
現在のプログラム内で name が見つかった場合は 0、name が見つからなかった場合は 1 を返します。
ここで
name は、シンボルの名前です。
file コマンドは、現在のファイルの表示や変更を行います。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
現在のファイルの名前を出力します。
現在のファイルを変更します。
ここで
file_name は、ファイルの名前です。
ネイティブモードでは、files コマンドは正規表現に一致したファイル名を表示します。Java モードでは、files コマンドは dbxで認識されているすべての Java ソースファイルのリストを表示します。Java ソースファイルが .class または .jar ファイルのように同一のディレクトリにない場合、$JAVASRCPATH 環境変数を設定しない限り dbx はそれらを発見できない場合があります (「Java ソースファイルの格納場所の指定」を参照)。
現在のプログラムに対してデバッグ情報を提供したファイルすべての名前を一覧表示します (-g によってコンパイルされたもの)。
指定の正規表現に一致し -g によってコンパイルされたファイルすべての名前を一覧表示します。
ここで
regular_expression は、正規表現です。
次に例を示します。
(dbx) files ^r myprog: retregs.cc reg_sorts.cc reg_errmsgs.cc rhosts.cc
dbx で認識されているすべての Java ソースファイルの名前を表示します。
fix コマンドは、修正されたソースファイルを再コンパイルし、修正された関数をアプリケーションに動的にリンクします。ネイティブモードでだけ有効です。Linux プラットフォームでは有効ではありません。
現在のファイルを修正します。
リストにあるファイルを修正します。
ソースに手が加えられていない場合にも、ファイルの修正を強制します。
手が加えられたファイルすべてを修正します。
-O フラグを取り除き、-g フラグを追加します。
コンパイル行を出力します (dbx による使用を目的として内部的に追加されたオプションの一部が含まれることがある)。
compile/link コマンドを実行しません (-v を付けて使用)。
冗長モード (dbx 環境変数 fix_verbose の設定より優先されます)。
簡易モード (dbx 環境変数 fix_verbose の設定より優先されます)。
fixed コマンドは、固定ファイルすべての名前を一覧表示します。ネイティブモードでだけ有効です。
fixed
fortran_modules コマンドは現在のプログラムの Fortran モジュール、または、あるモジュール内の関数または変数を一覧表示します。
現在のプログラムの、すべての Fortran モジュールを一覧表示します。
指定したモジュールのすべての関数を一覧表示します。
指定したモジュールのすべての変数を一覧表示します。
frame コマンドは、現在のスタックフレーム番号の表示や変更を行います。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
現在のフレームのフレーム番号を表示します。
現在のフレームとしてフレーム number を設定します。
number 個のフレームだけスタックを上方向に移動します。デフォルトは 1 です。
number 個のフレームだけスタックを下方向に移動します。デフォルトは 1 です。
フレームが隠されている場合でもフレームに進みます。
ここで
number は、呼び出しスタック内のフレームの番号です。
ネイティブモードでは、func コマンドは現在の関数を表示または変更します。Java モードでは、func コマンドは現在のメソッドを表示または変更します。
現在の関数の名前を出力します。
現在の関数を関数または手続き procedure に変更します。
ここで
procedure は、関数または手続きの名前です。
現在の関数の名前を出力します。
現在の関数をメソッド method_name に変更します。
ここで
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
method_name は、Java メソッドの名前です。
parameters は、メソッドのパラメータです。
funcs コマンドは、特定の正規表現に一致する関数名をすべて一覧表示します。ネイティブモードでだけ有効です。
現在のプログラム内の関数すべてを一覧表示します。
-f file_name を指定すると、ファイル内の関数すべてが表示されます。-g を指定すると、デバッグ情報を持つ関数すべてが表示されます。file_name が .o で終わる場合、コンパイラによって自動的に生成された関数を含むすべての関数がリストされます。そうでない場合、ソースコードにある関数のみがリストされます。
regular_expression を指定すると、この正規表現に一致する関数すべてが表示されます。
ここで
file_name は、一覧表示対象の関数が入っているファイルの名前です。
regular_expression は、一覧表示対象の関数が一致する正規表現です。
次に例を示します。
(dbx) funcs [vs]print ”libc.so.1”isprint ”libc.so.1”wsprintf ”libc.so.1”sprintf ”libc.so.1”vprintf ”libc.so.1”vsprintf |
gdb コマンドは、gdb コマンドセットをサポートします。ネイティブモードでだけ有効です。
gbd on を使用すると、dbx が gdb コマンドを理解し受け付ける gdb コマンドモードに入ります。gdb コマンドモードを終了し dbx コマンドモードに戻るには、gdb off と入力します。dbx コマンドは gdb コマンドモードでは受け付けられません。gdb コマンドは dbx モードでは受け付けられません。ブレークポイントなどのデバッグ設定は、コマンドモードの種類にかかわらず保持されます。
このリリースでは、次の gdb コマンドをサポートしていません。
commands
define
handle
hbreak
interrupt
maintenance
printf
rbreak
return
signal
tcatch
until
handler コマンドは、イベントハンドラを変更します (使用可能や使用不可にするなど)。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
ハンドラは、デバッグセッションで管理する必要があるイベントそれぞれについて作成されます。trace、stop、when の各コマンドは、ハンドラを作成します。これらのコマンドはそれぞれ、ハンドラ ID と呼ばれる番号を返します (handler_id)。handler、status、delete の各コマンドは、一般的な方法でハンドラの操作やハンドラ情報の提供を行います。
特定のハンドラを使用可能にし、全ハンドラを示す all を handler_id として指定します。
特定のハンドラを使用不可にし、全ハンドラを示す all を handler_id として指定します。handler_id の代わりに $firedhandlers を使用すると、最後の停止を引き起こしたハンドラが使用不可となります。
特定のハンドラのトリップカウンタの値を出力します。
特定のイベントに対し、新たなカウント制限値を設定します。
特定のハンドラのトリップカウンタをリセットします。
ここで
handler_id は、ハンドラの識別子です。
hide コマンドは、特定の正規表現に一致するスタックフレームを隠します。ネイティブモードでだけ有効です。
現在有効であるスタックフレームフィルタを一覧表示します。
regular_expression に一致するスタックフレームを隠しま す。正規表現は関数名またはロードオブジェクトの名前を表し、sh または ksh の正規表現スタイルをとります。
ここで
regular_expression は、正規表現です。
ignore コマンドは、指定のシグナルを捕獲しないように dbx プロセスに指示します。ネイティブモードでだけ有効です。
シグナルを無視すると、プロセスがそのシグナルを受信しても dbx が停止しなくなります。
無視するシグナルのリストを出力します。
number の番号のシグナルを無視します。
signal によって名前を付けられたシグナルを無視します。 SIGKILL を捕獲したり無視したりすることはできません。
ここで
number は、シグナルの番号です。
signal はシグナル名です。
import コマンドは、dbx コマンドライブラリからコマンドをインポートします。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
dbx コマンドライブラリ pathname からコマンドをインポートします。
ここで
pathname は、dbx コマンドライブラリのパス名です。
intercept コマンドは、指定タイプ (C++ のみ) の (C++ 例外) を送出します。ネイティブモードでだけ有効です。
送出された例外の種類が阻止リストの種類と一致した場合、その例外の種類が除外リストの種類とも一致した場合を除いて、dbx は停止します。一致するものがない送出例外は、「処理されない」送出と呼ばれます。送出元関数の例外仕様に一致しない送出例外は、「予期されない」送出と呼ばれます。
処理されない送出と予期されない送出は、デフォルト時に阻止されます。
種類が excluded_typename の送出を阻止リストに追加します。
excluded_typename 以外のすべての種類の送出を阻止リストに追加します。
インターセプトリストと除外リストの両方をクリアし、リストを指定した種類のみを送出する阻止または除外に設定します。
阻止対象の型を一覧表示します。
ここで
included_typename および excluded_typename は、List <int> や unsigned short などの例外仕様です。
java コマンドは、dbx が JNI モードの場合に、指定したコマンドの Java バージョンを実行するように指定します。java コマンドは、指定したコマンドで Java の式の評価を実行するように設定します。また、該当する場合には、Java スレッドおよびスタックフレームを表示します。
java command
ここで
command は、実行対象コマンドの名前および引数です。
jclasses コマンドは、コマンド実行時に dbx で認識されているすべての Java クラスの名前を出力します。Java モードでだけ有効です。
プログラム内のまだ読み込まれていないクラスは出力されません。
dbx で認識されているすべての Java クラスの名前を出力します。
システムクラスおよびその他の認識されている Java クラスを出力します。
joffコマンドは、Java モードまたは JNI モードからネイティブモードに dbx を切り替えます。
joff
jon コマンドは、ネイティブモードから Java モードに dbx を切り替えます。
jon
jpkgs コマンドは、コマンド実行時に dbx で認識されているすべての Java パッケージの名前を出力します。Java モードでだけ有効です。
プログラム内のまだ読み込まれていないパッケージは出力されません。
jpkgs
kill コマンドはプロセスにシグナルを送ります。ネイティブモードでだけ有効です。
既知の全シグナルの番号、名前、説明を一覧表示します。
制御対象プロセスを終了します。
一覧表示されているジョブに SIGTERM シグナルを送ります。
一覧表示されているジョブに指定のシグナルを送ります。
ここで
job としてプロセス ID を指定するか、または次のいずれかの方法で指定します。
現在のジョブを終了します。
直前のジョブを終了します。
number の番号を持つジョブを終了します。
string で始まるジョブを終了します。
string を含んでいるジョブを終了します。
signal はシグナル名です。
language コマンドは、現在のソース言語の表示や変更を行います。ネイティブモードでだけ有効です。
dbx language_mode 環境変数 (「dbx 環境変数の設定」参照) によって設定される現在の言語モードを出力します。言語モードが autodetect または main に設定されている場合は、式の解析と評価に使用されている現在の言語の名前も出力されます。
ここで
language は、c、c++、fortran、または fortran90 です。
c は、ansic の別名です。
line コマンドは、現在の行番号の表示や変更を行います。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
現在の行番号を表示します。
現在の行番号として number を設定します。
現在の行番号として行 1 を file_name に設定します。
現在の行番号として行 number を file_name に設定します。
ここで
file_name は、変更対象の行番号があるファイルの名前です。ファイル名を囲んでいる "" は省略可能です。
number は、ファイル内の行の番号です。
line 100 line "/root/test/test.cc":100
list コマンドは、ソースファイルの行を表示します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
デフォルト表示行数 N は、dbx 環境変数 output_list_size によって制御されます。
N 行を一覧表示します。
行番号 number を表示します。
次の N 行を一覧表示します。
次の n 行を一覧表示します。
直前の N 行を一覧表示します。
直前の n 行を一覧表示します。
n1 から n2 までの行を一覧表示します。
n1 から n1 +N までを一覧表示します。
n1 から n1 + n2 までを一覧表示します。
n1-N から n1. までを一覧表示します。
n1 - n2 から n1 までを一覧表示します。
function のソースの先頭を表示します。 list function は、現在のスコープを変更します。詳細については、「プログラムスコープ」を参照してください。
ファイル file_name の先頭を表示します。
ファイル filename を行 n から表示します。
ここで
file_name は、ソースコードファイルの名前です。
function は、表示対象の関数の名前です。
number は、ソースファイル内の行の番号です。
n は、表示対象の行数です。
n1 は、最初に表示する行の番号です。
n2 は、最後に表示する行の番号です。ファイルの末尾行を示す '$' を行番号の代わりに使用できます。コンマは省略可能です。
ソース行とアセンブリコードを混合します。
行または関数のまわりの N (または n) 行を一覧表示します。このオプションを '+' 構文または '-' 構文と併用したり 2 つの行番号が指定されているときに使用したりすることはできません。
関数名と使用した場合、関数全体を一覧表示します。パラメータなしで使用した場合、現在の関数に残りがあると、その残りを一覧表示します。
list // list N lines starting at current line list +5 // list next 5 lines starting at current line list - // list previous N lines list -20 // list previous 20 lines list 1000 // list line 1000 list 1000,$ // list from line 1000 to last line list 2737 +24 // list line 2737 and next 24 lines list 1000 -20 // list line 980 to 1000 list test.cc:33 // list source line 33 in file test.cc list -w // list N lines around current line list -w8 ”test.cc”func1 // list 8 lines around function func1 list -i 500 +10 // list source and assembly code for line 500 to line 510
listi コマンドは、ソース命令と逆アセンブリされた命令を表示します。ネイティブモードでだけ有効です。
詳細については、「list コマンド」を参照してください。
loadobject コマンドは、現在のロードオブジェクトの名前を出力します。ネイティブモードでだけ有効です。
読み込まれているロードオブジェクトを表示します (「loadobject -list コマンド」参照)。
指定したロードオブジェクトのシンボルを読み込みます (「loadobject -load コマンド」参照)。
指定したロードオブジェクトの読み込みを解除します (「loadobject -unload コマンド」参照)。
dbx の検索アルゴリズムからロードオブジェクトを削除します (「loadobject -hide コマンド」参照)。
dbx の検索アルゴリズムにロードオブジェクトを追加します (「loadobject -use コマンド」参照)。
ロードオブジェクトの ELF 情報を表示します (「loadobject -dumpelf コマンド」参照)。
ex_regexp に一致するロードオブジェクトを自動的に読み込まないように指定します (「loadobject -exclude コマンド」参照)。
除外パターンのリストをクリアします (「loadobject -exclude コマンド」参照)。
ここで
regexp は正規表現です。指定していない場合は、コマンドがすべてのロードオブジェクトに適用されます。
ex-regexp は省略できません。
このコマンドには、別名 lo がデフォルトで設定されています。
loadobject -dumpelf コマンドは、ロードオブジェクトのさまざまな ELF の詳細情報を表示します。ネイティブモードでだけ有効です。
loadobject -dumpelf [regexp]
ここで
regexp は正規表現です。指定していない場合は、コマンドがすべてのロードオブジェクトに適用されます。
このコマンドは、ディスク上のロードオブジェクトの ELF 構造に関する情報をダンプします。この出力の詳細は、今後変更される可能性があります。この出力を解析する場合は、Solaris OS のコマンドである dump または elfdump を使用してください。
loadobject -exclude コマンドは、指定した正規表現に一致するロードオブジェクトを自動的に読み込まないように指定します。
loadobject -exclude ex_regexp [-clear]
ここで
ex_regexp は正規表現です。
このコマンドは、指定した正規表現に一致するロードオブジェクトのシンボルを dbx で自動的に読み込まないように指定します。ほかの loadobject のサブコマンドでの regexp とは異なり、ex_regexp を指定しない場合は、すべてのロードオブジェクトを対象に処理が実行されることはありません。ex-regexp を指定しない場合は、このコマンドは前の loadobject -exclude コマンドで指定した除外パターンを表示します。
-clear を指定した場合は、除外パターンのリストが削除されます。
現時点では、この機能を使用してメインプログラムや実行時リンカーを読み込まないように指定することはできません。また、このコマンドを使用して C++ 実行時ライブラリを読み込まないように指定すると、C++ の一部の機能が正常に機能しなくなります。
このオプションは、実行時チェック (RTC) では使用しないでください。
loadobject -hide コマンドは、dbx の検索アルゴリズムからロードオブジェクトを削除します。
loadobject -hide [regexp]
ここで
regexp は正規表現です。指定していない場合は、コマンドがすべてのロードオブジェクトに適用されます。
このコマンドは、プログラムのスコープからロードオブジェクトを削除し、その関数およびシンボルを dbx で認識しないように設定します。また、このコマンドは、「preload」ビットをリセットします。
loadobject -list コマンドは、読み込まれているロードオブジェクトを表示します。ネイティブモードでだけ有効です。
loadobject -list [regexp] [-a]
ここで
regexp は正規表現です。指定していない場合は、コマンドがすべてのロードオブジェクトに適用されます。
各ロードオブジェクトのフルパス名が表示されます。また、余白部分には状態を示す文字が表示されます。隠されたロードオブジェクトは、-a オプションを指定した場合のみリスト表示されます。
"hidden" を意味します (シンボルは、whatis や stop in などのシンボル照会では検出されません)。
有効なプロセスがある場合、u は「マップされていない」を意味します。
この文字は、事前に読み込まれた LO、つまり loadobject -load コマンドまたはプログラムの dlopen イベントの結果を示します。
次に例を示します。
(dbx) lo -list libm /usr/lib/64/libm.so.1 /usr/lib/64/libmp.so.2 (dbx) lo -list ld.so h /usr/lib/sparcv9/ld.so.1 (rtld)
最後の例は、実行時リンカーのシンボルがデフォルトでは隠されていることを示します。これらのシンボルを dbx コマンドで使用するには、次の 「loadobject -use コマンド」を使用します。
loadobject -load コマンドは、指定したロードオブジェクトのシンボルを読み込みます。ネイティブモードでだけ有効です。
loadobject -load loadobject
ここで
loadobject には、フルパス名または /usr/lib、/usr/lib/sparcv9、または /usr/lib/amd64 内のライブラリを指定します。デバッグ中のプログラムがある場合は、該当する ABI ライブラリのディレクトリだけが検索されます。
loadobject -unload コマンドは、指定したロードオブジェクトを読み込み解除します。ネイティブモードでだけ有効です。
loadobject -unload [regexp]
ここで
regexp は正規表現です。指定していない場合は、コマンドがすべてのロードオブジェクトに適用されます。
このコマンドは、コマンド行で指定した regexp に一致するすべてのロードオブジェクトのシンボルを読み込み解除します。debug コマンドで読み込んだ主プログラムは読み込み解除できません。また、使用中のロードオブジェクトや、dbx が正常に動作するために必要なロードオブジェクトの読み込み解除もできない場合があります。
loadobject -use コマンドは、dbx の検索アルゴリズムにロードオブジェクトを追加します。ネイティブモードでだけ有効です。
loadobject -use [regexp]
ここで
regexp は正規表現です。指定していない場合は、コマンドがすべてのロードオブジェクトに適用されます。
lwp コマンドは、現在の LWP (軽量プロセス) の表示や変更を行います。ネイティブモードでだけ有効です。
lwp コマンドは Solaris プラットフォームでのみ利用可能です。
現在の LWP を表示します。
LWP lwp_id に切り替えます。
現在の LWP の名前、ホーム、およびマスクシグナルを表示します。
fp レジスタに address_expression の値が入っていることを dbx に伝えます。デバッグするプログラムの状態は変更されません。assign $fp=... が利用できないコアファイルをデバッグします。-setfp オプションで設定されたフレームポインタは、実行を再開するときに元の値にリセットされます。
このコマンドより前で使用された lwp -setfp コマンドの設定を元に戻して、フレームポインタの論理値を現在のプロセスまたはコアファイルのレジスタ値から設定します。
ここで
lwp_id は軽量プロセスの識別子です。
コマンドに lwp_id とオプションの両方が使用された場合、対応するアクションは lwp_id によって指定された LWP に適用されますが、現在の LWP は変更されません。
-setfp と -resetfp オプションは、LWP のフレームポインタ (fp) が破損した場合に便利です。このイベントでは、dbx は呼び出しスタックを適切に再構築できず、局所変数を評価できません。これらのオプションは assign $fp=... が利用できないコアファイルのデバッグ時に機能します。
fp への変更を、デバッグするアプリケーションに見えるようにするには、assign $fp=address_expression コマンドを使用します。
lwps コマンドは、プロセス内の LWP (軽量プロセス) すべてを一覧表示します。ネイティブモードでだけ有効です。
lwps コマンドは Solaris プラットフォームでのみ利用可能です。
現在のプロセス内の LWP すべてを一覧表示します。
mmapfile コマンドは、コアダンプに存在しないメモリーマップファイルの内容を表示します。ネイティブモードでだけ有効です。
Solaris コアファイルには、読み取り専用のメモリーセグメントは含まれていません。実行可能な読み取り専用セグメント (つまりテキスト) は自動的に処理され、dbx は、実行可能ファイルと関連する共有オブジェクトを調べることによってこれらのセグメントに対するメモリーアクセスを解釈処理します。
コアダンプに存在しないメモリーマップファイルの内容を表示します。
ここで
mmapped_file は、コアダンプ中にメモリーマップされたファイルのファイル名です。
address は、プロセスのアドレス空間の開始アドレスです。
length は、表示対象アドレス空間のバイト単位による長さです。
offset は、mmapped_file の開始アドレスまでのバイト単位によるオフセットです。
読み取り専用データセグメントは、アプリケーションメモリーがデータベースをマップしたときに通常発生します。次に例を示します。
caddr_t vaddr = NULL; off_t offset = 0; size_t = 10 * 1024; int fd; fd = open("../DATABASE", ...) vaddr = mmap(vaddr, size, PROT_READ, MAP_SHARED, fd, offset); index = (DBIndex *) vaddr;
デバッガによってメモリーとしてデータベースにアクセスできるようにするには、次を入力します。
mmapfile ../DATABASE $[vaddr] $[offset] $[size]
ここで、次を入力すれば、データベースの内容を構造的に表示させることができます。
print *index
module コマンドは、1 個または複数のモジュールのデバッグ情報を読み込みます。ネイティブモードでだけ有効です。
現在のモジュールの名前を出力します。
name というモジュールのデバッグ情報を読み込みます。
全モジュールのデバッグ情報を読み込みます。
ここで
name は、読み込み対象のデバッグ情報が関係するモジュールの名前です。
-a は、すべてのモジュールを指定します。
-f は、実行可能ファイルより新しいファイルの場合でもデバッグ情報の読み込みを強制します (使用にあたっては十分に注意してください)。
-v は、言語、ファイル名などを出力する冗長モードを指定します。
-q は、静止モードを指定します。
modules コマンドは、モジュール名を一覧表示します。ネイティブモードでだけ有効です。
すべてのモジュールを一覧表示します。
デバッグ情報が入っているモジュールすべてを一覧表示します。
すでに読み込まれたデバッグ情報が入っているモジュールの名前を表示します。
ここで
-v は、言語、ファイル名などを出力する冗長モードを指定します。
native コマンドは、dbx が Java モードの場合に、指定したコマンドのネイティブバージョンを実行するように指定します。コマンドの前に "native" を指定すると、dbx はそのコマンドをネイティブモードで実行します。つまり、式が C または C++ の式として解釈および表示され、一部のコマンドでは Java モードの場合と異なる出力が生成されます。
このコマンドは、Java コードをデバッグしていて、ネイティブ環境を調べる必要があるときに便利です。
native command
ここで
command は、実行対象コマンドの名前および引数です。
next コマンドは、1 ソース行をステップ実行します (呼び出しをステップオーバー)。
dbx の環境変数 step_events (「dbx 環境変数の設定」参照) は、ステップ実行中にブレークポイントが使用可能であるかどうかを制御します。
1 行をステップ実行します (呼び出しをステップオーバー)。関数呼び出しがステップオーバーされるマルチスレッドプログラムの場合、デッドロック状態を避けるため、その関数呼び出し中は全 LWP (軽量プロセス) が暗黙に再開されます。非活動状態のスレッドをステップ実行することはできません。
n 行をステップ実行します (呼び出しをステップオーバー)。
ステップ実行中に指定のシグナルを引き渡します。
指定のスレッドをステップ実行します。
指定の LWP をステップ実行します。関数をステップオーバーしたときに全 LWP を暗黙に再開しません。
ここで
n は、ステップ実行対象の行数です。
signal はシグナル名です。
thread_id は、スレッド ID です。
lwp_id は、LWP ID です。
明示的な thread_id または lwp_id が指定されている場合、next コマンドによる汎用のデッドロック回避は無効となります。
マシンレベルの呼び出しステップオーバーについては、「nexti コマンド」も参照してください。
軽量プロセス (LWP) の詳細については、Solaris の『マルチスレッドのプログラミング』を参照してください。
1 行をステップ実行します (呼び出しをステップオーバー)。関数呼び出しがステップオーバーされるマルチスレッドプログラムの場合、デッドロック状態を避けるため、その関数呼び出し中は全 LWP (軽量プロセス) が暗黙に再開されます。非活動状態のスレッドをステップ実行することはできません。
n 行をステップ実行します (呼び出しをステップオーバー)。
指定のスレッドをステップ実行します。
指定の LWP をステップ実行します。関数をステップオーバーしたときに全 LWP を暗黙に再開しません。
ここで
n は、ステップ実行対象の行数です。
thread_id は、スレッド識別子です。
lwp_id は、LWP 識別子です。
明示的な thread_id または lwpid が指定されている場合、next コマンドによる汎用のデッドロック回避は無効となります。
軽量プロセス (LWP) の詳細については、Solaris の『マルチスレッドのプログラミング』を参照してください。
nexti コマンドは、1 マシン命令をステップ実行します (呼び出しをステップオーバー)。ネイティブモードでだけ有効です。
マシン命令 1 個をステップ実行します (呼び出しをステップオーバー)。
n 行をステップ実行します (呼び出しをステップオーバー)。
ステップ実行中に指定のシグナルを引き渡します。
指定の LWP をステップ実行します。
指定のスレッドが活動状態である LWP をステップ実行します。関数をステップオーバーしたときに全 LWP を暗黙に再開しません。
ここで、
n は、ステップ実行対象の命令数です。
signal はシグナル名です。
thread_id は、スレッド ID です。
lwp_id は、LWP ID です。
omp_loop コマンドは現在のループに関する説明を出力します。これには、スケジューリング (静的、動的、ガイド付き、自動、または実行時)、番号付きまたは番号なし、範囲、ステップ数または刻み幅、および繰り返し回数が含まれます。このコマンドは、ループを現在実行中のスレッドからしか発行できません。
omp_loop
omp_pr コマンドは、現在の並列領域または指定された並列領域に関する説明を出力します。これには、親領域、並列領域の ID、チームのサイズ (スレッド数)、およびプログラムの場所 (プログラムのカウンタアドレス) が含まれます。
現在の並列領域の説明を出力します。
指定された並列領域の説明を出力します。このコマンドを実行しても、dbx は現在の並列領域を指定の並列領域に切り替えません。
現在の並列領域から、現在の並列領域ツリーのルートに至るまで、パス上のすべての並列領域の説明を出力します。
指定された並列領域から、そのルートに至るまで、パス上のすべての並列領域の説明を出力します。
並列領域ツリー全体の説明を出力します。
チームメンバー情報とともに、現在の並列領域の説明を出力します。
omp_serialize コマンドは、現在のスレッド、または現在のチームのすべてのスレッドで、次に検出された並列領域の実行を直列化します。直列化は、並列領域への 1 回限りのトリップに対してのみ適用され、持続はしません。
このコマンドを使用するときは、プログラム内での位置が正しいことを確認してください。論理的な位置とは、並列指令の直前です。
現在のスレッドで、次に検出された並列領域の実行を直列化します。
現在のチームのすべてのスレッドで、次に検出された並列領域の実行を直列化します。
omp_team コマンドは、現在のチームのすべてのスレッドを出力します。
現在のチームのすべてのスレッドを出力します。
指定された並列領域のチームのすべてのスレッドを出力します。
omp_tr コマンドは、現在のタスク領域に関する説明を出力します。これには、タスク領域 ID、型 (暗黙的、明示的)、状態 (生成済み、実行中、または待機中)、実行中のスレッド、プログラムの場所 (プログラムのカウンタアドレス)、未完了の子、親が含まれます。
現在のタスク領域の説明を出力します。
指定されたタスク領域の説明を出力します。このコマンドが実行されても、dbx は、現在のタスク領域を指定されたタスク領域に切り替えません。
現在のタスク領域から、現在のタスク領域ツリーのルートに至るまで、パス上のすべてのタスク領域の説明を出力します。
指定されたタスク領域から、そのルートに至るまで、パス上のすべてのタスク領域の説明を出力します。
タスク領域ツリー全体の説明を出力します。
pathmap コマンドは、ソースファイルなどを検索するために、1 つのパス名を別のパス名にマップします。マッピングは、ソースパス、オブジェクトファイルパス、および現在の作業ディレクトリに適用されます (-c を指定した場合)。pathmap コマンドの構文および機能は、ネイティブモードと Java モードで同一です。
pathmap コマンドは、さまざまなホスト上に存在するさまざまなパスを持つ、オートマウントされた明示的な NFS マウント済みファイルシステムを取り扱うときに便利です。オートマウントされたファイルシステムにおける CWD も不正確であるため、オートマウンタが原因である問題を解決する際には、-c を指定します。pathmap コマンドは、ソースツリーやビルドツリーを移動した場合にも便利です。
デフォルトの場合、pathmap /tmp_mnt / が存在します。
pathmap コマンドは、dbx 環境変数 core_lo_pathmap が on に設定されているときにロードオブジェクトを検索します。前述の場合以外では、pathmap コマンドはロードオブジェクト (共有ライブラリ) の検索に対して効果がありません。「一致しないコアファイルのデバッグ」を参照してください。
from から to への新たなマッピングを作成します。
すべてのパスを to にマッピングします。
既存のパスマッピングすべてを一覧表示します (インデックス別に)。
前述と同じですが、出力を dbx によって読み込むことができます。
任意のマッピングをパスごとに削除します。
任意のマッピングをインデックスごとに削除します。
ここで
from と to は、ファイルパス接頭辞です。from は実行可能ファイルやオブジェクトファイルにコンパイルされたファイルパス、to はデバッグ時におけるファイルパスを示します。
from1 は、最初に削除するマッピングのファイルパスです。
from2 は、最後に削除するマッピングのファイルパスです。
index は、マッピングをリストに挿入する際に使用するインデックスを指定します。インデックスを指定しなかった場合、リスト末尾にマッピングが追加されます。
index1 は、最初に削除するマッピングのインデックスです。
index2 は、最後に削除するマッピングのインデックスです。
-c を指定すると、現在の作業用ディレクトリにもマッピングが適用されます。
-s を指定すると、dbx が読み込める出力形式で既存のマッピングがリストされます。
-d を指定すると、指定のマッピングが削除されます。
(dbx) pathmap /export/home/work1 /net/mmm/export/home/work2 # maps /export/home/work1/abc/test.c to /net/mmm/export/home/work2/abc/test.c (dbx) pathmap /export/home/newproject # maps /export/home/work1/abc/test.c to /export/home/newproject/test.c (dbx) pathmap (1) -c /tmp_mnt / (2) /export/home/work1 /net/mmm/export/home/work2 (3) /export/home/newproject
pop コマンドは、1 個または複数のフレームを呼び出しスタックから削除します。ネイティブモードでだけ有効です。
-g を使ってコンパイルされた関数の場合、フレームにポップできるだけです。プログラムカウンタは、呼び出し場所におけるソース行の先頭にリセットされます。デバッガによる関数呼び出しを越えてポップすることはできません。pop -c を使用してください。
通常、pop コマンドはポップ対象フレームに関する C++ デストラクタをすべて呼び出します。dbx 環境変数 pop_auto_destruct を off に設定すれば、この動作を変更できます (「dbx 環境変数の設定」参照)。
現在のトップフレームをスタックからポップします。
number 個のフレームをスタックからポップします。
現在のフレーム number までフレームをスタックからポップします。
デバッガが行なった最後の呼び出しをポップします。
ここで
number は、スタックからポップするフレームの数です。
ネイティブモードでは、print コマンドは式の値を出力します。Java モードでは、print コマンドは式、局所変数、パラメータの値を出力します。
式 expression, ... の値を出力します。
継承メンバーを含み、式 expression の値を出力します (C++ のみ)。
dbx 環境変数 output_inherited_members が on であるときは、継承メンバーを出力しません (C++ のみ)。
式 expression の静的型ではなく動的型を表示します (C++ のみ)。
dbx 環境変数 output_dynamic_type が on であるときは、式 expression の動的型を使用しません (C++ のみ)。
式の中に private 変数または thread-private 変数が含まれる場合に、現在の OpenMP の並列領域の各スレッドの式 expression の値を出力します。
静的メンバーを含み、式 expression の値を出力します (C++ のみ)。
dbx 環境変数 show_static_members が on に設定されている場合は、静的メンバーを出力しません (C++ のみ)。
prettyprint 関数を呼び出します。
dbx 環境変数 output_pretty_print が on であるときは、prittyprint 関数を呼び出しません。
出力オブジェクト expression が 4K を超える場合は、出力を強制実行します。
式が文字列である場合 (char *)、アドレスの出力のみを行い、文字を出力しません。
('Literal') 左側を出力しません。式が文字列である場合 (char *)、アドレスの出力は行わず、文字列内の文字だけを引用符なしで出力します。
整数、文字列、浮動小数点の式の形式として format を使用します (オンラインヘルプの format 参照)。
指定の形式を使用しますが、左側 (変数名や式) は出力しません (オンラインヘルプの format 参照)。
expression の値を出力します。これは、序数としての列挙式でなければなりません。ここでは、形式文字列を使用することもできます (-fformat)。非列挙式の場合、このオプションは無視されます。
'--' は、フラグ引数の終わりを示します。これは、expression がプラスやマイナスで始まる可能性がある場合に便利です。スコープ解釈処理ルールについては、「プログラムスコープ」を参照してください。
ここで
expression は、出力対象の値を持つ式です。
format は、式の出力時に使用する形式です。形式が指定の型に適用しない場合は、形式文字列は無視され、内蔵出力機構が使用されます。
許可されている形式は printf(3S) コマンドで使用されているもののサブセットです。次の制限が適用されます。
n 変換できません。
フィールド幅または精度に * を使用できません。
%<桁>$ 引数を選択できません。
1 つの形式文字列に対して 1 つの変換指定のみが可能です。
許可されている形式は、次の簡易文法で定義されます。
FORMAT ::= CHARS % FLAGS WIDTH PREC MOD SPEC CHARS
CHARS ::= < % を含まない任意の文字シーケンス >
| %%
| <empty>
| CHARS CHARS
FLAGS ::= + | - | <space> | # | 0 | <empty>
WIDTH ::= <decimal_number> | <empty>
PREC ::= . | . <decimal_number> | <empty>
MOD ::= h | l | L | ll | <empty>
SPEC ::= d | i | o | u | x | X | f | e | E | g | G |
c | wc | s | ws | p
指定した形式文字列が % を含まない場合は、dbx によって自動的に付加されます。形式文字列がスペース、セミコロン、またはタブを含んでいる場合は、形式文字列全体を二重引用符で囲む必要があります。
式 expression, ... または識別子 identifier, .... の値を出力します。
継承メンバーを含み、expression または識別子 identifier の値を出力します。
dbx 環境変数 output_inherited_members が on であ るときは、継承メンバーを出力しません。
式 expression または識別子 identifier の、静的型ではなく動的型を表示します。
dbx 環境変数 dbx output_dynamic_type が on であるときは、式 expression の動的型または識別子 identifier の値は使用しないでください。
'--' は、フラグ引数の終わりを示します。これは、expression がプラスやマイナスで始まる可能性がある場合に便利です。スコープ解釈処理ルールについては、「プログラムスコープ」を参照してください。
ここで
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
expression は、値を出力する Java 式です。
field_name は、クラス内のフィールド名です。
identifier は this を含む局所変数またはパラメータで、現在のクラスインスタンス変数 (object_name.field_name) またはクラス (静的) 変数 (class_name.field_name) です。
object_name は、Java オブジェクトの名前です。
proc コマンドは、現在のプロセスの状態を表示します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
ロードオブジェクトのリストおよびアドレスを表示します。
現在のプロセス ID (pid) を表示します。
prog コマンドは、デバッグ中のプログラムとその属性を管理します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
据え置きされていた記号情報を、dbx 環境変数 run_quick を on に設定することによって読み込みます。
- を使用してプログラムに接続されている場合、実行可能ファイルのフルパス - を出力します。
argv[0] を含む argv 全体を出力します。
argv[0] を含まない argv を出力します。
< filename を出力します。 stdin が使用されている場合は、空にします。
> filename または >> filename を出力します。stdoutが 使用されている場合は空にします。-args、-stdin、-stdout の出力は、組み合わせて run コマンドで使用できるようになっています (「run コマンド」参照)。
quit コマンドは、dbx を終了します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
dbx がプロセスに接続されている場合、このプロセスを切り離してから終了が行われます。保留状態のシグナルは取り消されます。微調整を行うには、detach コマンドを使用します (「detach コマンド」参照)。
リターンコード 0 を出力して dbx を終了します。exit と同じです。
リターンコード n を出力して終了します。 exit n と同じです。
ここで
n は、リターンコードです。
regs コマンドは、レジスタの現在値を出力します。ネイティブモードでだけ有効です。
regs [-f] [-F]
ここで
-f には、浮動小数点レジスタ (単精度) が含まれます (SPARC プラットフォームのみ)。
-F には、浮動小数点レジスタ (倍精度) が含まれます (SPARC プラットフォームのみ)。
dbx[13] regs -F current thread: t@1 current frame: [1] g0-g3 0x00000000 0x0011d000 0x00000000 0x00000000 g4-g7 0x00000000 0x00000000 0x00000000 0x00020c38 o0-o3 0x00000003 0x00000014 0xef7562b4 0xeffff420 o4-o7 0xef752f80 0x00000003 0xeffff3d8 0x000109b8 l0-l3 0x00000014 0x0000000a 0x0000000a 0x00010a88 l4-l7 0xeffff438 0x00000001 0x00000007 0xef74df54 i0-i3 0x00000001 0xeffff4a4 0xeffff4ac 0x00020c00 i4-i7 0x00000001 0x00000000 0xeffff440 0x000108c4 y 0x00000000 psr 0x40400086 pc 0x000109c0:main+0x4 mov 0x5, %l0 npc 0x000109c4:main+0x8 st %l0, [%fp - 0x8] f0f1 +0.00000000000000e+00 f2f3 +0.00000000000000e+00 f4f5 +0.00000000000000e+00 f6f7 +0.00000000000000e+00 |
replay コマンドは、最後の run、rerun、または debug コマンド以降のデバッグコマンドを再現します。ネイティブモードでだけ有効です。
次のコマンドすべてを再現するか、またはそれらのコマンドから number 個のコマンドを差し引いたコマンドを再現します。最後の run コマンド、rerun コマンド、または debug コマンド
ここで
number は、再現しないコマンドの数です。
rerun コマンドは、引数を付けないでプログラムを実行します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
引数を付けないでプログラムの実行を開始します。
save コマンドで新しい引数を付けてプログラムの実行を開始します (「save コマンド」参照)。
restore コマンドは、以前に保存されていた状態に dbx を復元します。ネイティブモードでだけ有効です。
restore [file_name]
ここで
file_name は、dbx コマンドの実行対象ファイルの名前です。このコマンドは、最後の run コマンド、rerun コマンド、または debug コマンドが保存されてから実行されます。
rprint コマンドは、シェル引用規則を使用して式を出力します。ネイティブモードでだけ有効です。
式の値を出力します。特別な引用規則は適用されないので、rprint a > b の場合、a の値 (存在する場合) がファイル b に入れられます (フラグの意味については 「print コマンド」参照)。
ここで
expression は、出力対象の値を持つ式です。
format は、式の出力時に使用する形式です。詳細については、「print コマンド」を参照してください。
rtc showmap コマンドは、計測種類 (分岐またはトラップ) で分類されるプログラムのアドレス範囲をレポートします。ネイティブモードでだけ有効です。
rtc showmap
このコマンドは上級ユーザー向けです。実行時チェックは、プログラムのテキストを計測してアクセスチェックを行います。計測種類として、使用可能なリソースに応じて、分岐またはトラップの命令を指定することができます。rtc showmap コマンドは、計測種類で分類されるプログラムのアドレス範囲をレポートします。このマップを使用して、パッチ領域オブジェクトファイルを追加するのに最適な場所を特定し、トラップの自動使用を回避することができます。詳細は、「実行時検査の制限」 を参照してください。
rtc skippatch コマンドは、ロードオブジェクト、オブジェクトファイル、および関数に対して、実行時検査による計測は行わないようにします。 コマンドの効果は、ロードオブジェクトが明示的に除外されないかぎり各 dbx セッションで有効なまま保持されます。
このコマンドの効果により、dbx はロードオブジェクト、オブジェクトファイル、および関数でメモリーアクセスを追跡しないため、スキップされない関数では、不正な rui エラーが報告されることがあります。このコマンドによって rui エラーが導かれたかどうかを dbx は特定できないため、このようなエラーは自動で抑制されません。
指定したオブジェクトを計測から除外します。
指定したロードオブジェクト内の指定したオブジェクトファイルや関数を計測から除外します。
ここで
load_object はロードオブジェクトの名前またはロードオブジェクトへのパスです。
object_file は、オブジェクトファイルの名前です。
function は、関数の名前です。
Ctrl-C を使用すると、プログラムの実行が停止します。
現在の引数を付けてプログラムの実行を開始します。
新規の引数を付けてプログラムの実行を開始します。
出力先の切り替えを設定します。
入力元の切り替えを設定します。
ここで
arguments はターゲットプロセスの実行に使用される引数です。
input_file は、入力元ファイルの名前です。
output_file は、出力先ファイルの名前です。
現在、run コマンドや runargs コマンドによって stderr の出力先を切り替えることはできません。
現在の引数を付けてプログラムの実行を開始します。
新規の引数を付けてプログラムの実行を開始します。
ここで
arguments はターゲットプロセスの実行に使用される引数です。これらの引数は、Java アプリケーション (JVM ソフトウェアではありません) に渡されます。main クラス名を引数として含めないでください。
Java アプリケーションの入力または出力を run コマンドでリダイレクトすることはできません。
一回の実行で設定したブレークポイントは、それ以降の実行でも有効になります。
runargs コマンドは、ターゲットプロセスの引数を変更します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
ターゲットプロセスの現在の引数を調べるには、引数を付けないで debug コマンドを使用します (「debug コマンド」参照)。
run コマンドで使用する現在の引数を設定します (「run コマンド」参照)。
run コマンドで使用する出力先を設定します。
run コマンドで使用する入力元を設定します。
現在の引数をクリアします。
ここで
arguments はターゲットプロセスの実行に使用される引数です。
file は、ターゲットプロセスからの出力またはターゲットプロセスへの入力の切り替え先です。
save コマンドは、コマンドをファイルに保存します。ネイティブモードでだけ有効です。
最後の run コマンド、rerun コマンド、または debug コマンド以降のコマンドすべて、またはそれらのコマンドから number 個のコマンドを差し引いたコマンドを、デフォルトファイルまたは file_name に保存します。
ここで
number は、保存しないコマンドの数です。
filename は、最後の run コマンド、rerun コマンド、または debug コマンドのあとに実行される dbx コマンドを保存するファイルの名前です。
scopes コマンドは、活動状態にあるスコープのリストを出力します。ネイティブモードでだけ有効です。
scopes
search コマンドは、現在のソースファイルにおいて順方向検索を行います。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
現在のファイルの中で、string を順方向で検索します。
最後の検索文字列を使用して検索を繰り返します。
ここで
string は、検索対象の文字列です。
showblock コマンドは、特定のヒープブロックが割り当てられた場所を示す実行時検査結果を表示します。ネイティブモードでだけ有効です。
実行時検査がオンになっているときに showblock コマンドを使用すると、指定アドレスのヒープブロックに関する詳細が表示されます。この詳細情報では、ブロックの割り当て場所とサイズを知ることができます。「check コマンド」を参照してください。
showblock -a address
ここで
address は、ヒープブロックのアドレスです。
showleaks コマンドは Solaris プラットフォームでのみ利用可能です。
デフォルトの簡易形式では、1 行に 1 つのリークレコードを示すレポートが出力されます。実際に発生したリークのあとに、発生する可能性のあるリークが報告されます。レポートは、リークのサイズによってソートされます。
showleaks [-a] [-m m] [-n number] [-v]
ここで
-a は、これまでに発生したリークすべてを表示します (最後の showleaks コマンドを実行したあとのリークだけではなく)。
-m m は、複数のリークをまとめます。2 個以上のリークに対する割り当て時の呼び出しスタックが m 個のフレームに一致するとき、これらのリークは 1 つのリークレポートにまとめて報告されます。-m オプションを指定すると、check コマンドで指定した m の大域値が無効となります (「check コマンド」参照)。
-n number は、最大 number 個のレコードをレポートに表示します。デフォルトの場合、すべてのレコードが表示されます。
-v 冗長出力を生成します。デフォルトの場合、簡易出力が表示されます。
1 行に 1 つの「使用中ブロック」を示すレコードが出力されます。このコマンドは、ブロックの合計サイズに基づいてレポートをソートします。最後の showleaks コマンド (「showleaks コマンド」参照) 実行後にリークしたブロックもレポートに含まれます。
showmemuse [-a] [-m m] [-n number] [-v]
ここで
-a は、使用中ブロックすべてを表示します (最後の showmemuse コマンド実行後のブロックだけではなく)。
-m m は、使用中ブロックレポートをまとめます。m のデフォルト値は 2 または check コマンドで最後に指定した大域値です (「check コマンド」参照)。2 個以上のブロックに対する割り当て時の呼び出しスタックが m 個のフレームに一致するとき、これらのブロックは 1 つのレポートにまとめて報告されます。-m オプションを使用すると、m の大域値が無効となります。
-n number は、最大 number 個のレコードをレポートに表示します。デフォルトは 20 です。
-v は、冗長出力を生成します。デフォルトの場合、簡易出力が表示されます。
source コマンドは、指定ファイルからコマンドを実行します。ネイティブモードでだけ有効です。
ファイル file_name からコマンドを実行します。$PATH は検索されません。
status コマンドは、イベントハンドラ (ブレークポイントなど) を一覧表示します。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
活動中の trace、when、および stop ブレークポイントを出力します。
ハンドラ handler_id のステータスを出力します。
隠れているものを含み、活動中の trace、when、および stop ブレークポイントを出力します。
前述と同じですが、出力を dbx によって読み込むことができます。
ここで
handler_id は、イベントハンドラの識別子です。
(dbx) status -s > bpts ... (dbx) source bpts |
step コマンドは、1 ソース行または 1 文をステップ実行します (-g オプションを使ってコンパイルされた呼び出しにステップインします)。
dbx 環境変数 step_events は、ステップ実行中にブレークポイントが使用可能であるかどうかを制御します。
dbx の環境変数 step_granularity は、ソース行のステップ実行のきめ細かさを制御します。
dbx の環境変数 step_abflow は、dbx が「異常」制御フロー変更が発生しそうになっていることを検出したときに停止するかどうかを制御します。このような制御フロー変更は、siglongjmp() または longjmp() の呼び出し、あるいは例外の送出が原因で発生することがあります。
1 行をステップ実行します (呼び出しにステップイン)。関数呼び出しがステップオーバーされるマルチスレッドプログラムの場合、デッドロック状態を避けるため、その関数呼び出し中は全スレッドが暗黙的に再開されます。非活動状態のスレッドをステップ実行することはできません。
n 行をステップ実行します (呼び出しにステップイン)。
ステップアップし、現在の関数から出ます。
ステップ実行中に指定のシグナルを引き渡します。シグナルに対するシグナルハンドラが存在する場合、そのシグナルハンドラが -g オプション付きでコンパイルされていると、そのシグナルにステップインします。
指定のスレッドをステップ実行します。step up には適用されません。
指定の LWP をステップ実行します。関数をステップオーバーしたときに全 LWP を暗黙に再開しません。
現在のソースコード行から呼び出された function へのス テップインを試行します。function が指定されなかった場合、最後の関数へのステップインを試行し、step コマンドおよび step up コマンドによる長いシーケンスを防止できます。最後の関数の例としては、次のものがあります。
f()->s()-t()->last();
last(a() + b(c()->d()));
ここで
n は、ステップ実行対象の行数です。
signal はシグナル名です。
thread_id は、スレッド ID です。
lwp_id は、LWP ID です。
function は、関数名です。
明示的な lwp_id が指定されている場合のみ、step コマンドによる汎用のデッドロック回避策は無効となります。
最後のアセンブル呼び出し命令へのステップインや現在のソースコード行の関数 (指定されている場合) へのステップインが試行されている間に、step to コマンドを実行した場合、条件付き分岐があると呼び出しが受け付けられないことがあります。呼び出しが受け付けられない場合や現在のソースコード行に関数呼び出しがない場合、step to コマンドが現在のソースコード行をステップオーバーします。step to コマンドをを使用する際は、ユーザー定義演算子に特に注意してください。
マシンレベルの呼び出しステップ実行については、「stepi コマンド」も参照してください。
1 行をステップ実行します (呼び出しにステップイン)。メソッド呼び出しがステップオーバーされるマルチスレッドプログラムの場合、デッドロック状態を避けるため、そのメソッド呼び出し中は全スレッドが暗黙的に再開されます。非活動状態のスレッドをステップ実行することはできません。
n 行をステップ実行します (呼び出しにステップイン)。
ステップアップし、現在のメソッドから出ます。
指定のスレッドをステップ実行します。step up には適用されません。
指定の LWP をステップ実行します。メソッドをステップオーバーしたときに全 LWP を暗黙に再開しません。
stepi コマンドは、1 マシン命令をステップ実行します (呼び出しにステップイン)。ネイティブモードでだけ有効です。
1 つのマシン命令をシングルステップ実行します (呼び出しにステップイン)。
n 個のマシン命令をシングルステップ実行します (呼び出しへのステップイン)。
ステップ実行し、指定のシグナルを引き渡します。
指定の LWP をステップ実行します。
指定のスレッドが活動状態である LWP をステップ実行します。
ここで
n は、ステップ実行対象の命令数です。
signal はシグナル名です。
lwp_id は、LWP ID です。
thread_id は、スレッド ID です。
stop コマンドは、ソースレベルのブレークポイントを設定します。
stop コマンドは、ソースレベルのブレークポイントを設定します。
stop event_specification [modifier]
指定イベントが発生すると、プロセスが停止されます。
ネイティブモードで有効な構文の中で重要なものを、いくつか次に示します。これ以外のイベントについては、「イベント指定の設定」を参照してください。
実行をただちに停止します。when コマンドの本体内でのみ有効です。
実行をただちに停止しますが、Oracle Solaris Studio IDE のデバッガウィンドウは更新しません。
address_expression で指定したメモリーがアクセスされた場合に、実行を停止します。「特定アドレスへのアクセス時にプログラムを停止する」も参照してください。
line_number で実行を停止します。「ソースコードの特定の行に stop ブレークポイントを設定する」も参照してください。
variable の値が変更された場合に実行を停止します。
condition_expression で指定した条件が真になる場合に実行を停止します。
function が呼び出されたときに実行を停止します。「関数に stop ブレークポイントを設定する」も参照してください。
C++ のみ: class/struct/union/template のいずれかのクラスのメンバー関数すべてにブレークポイントを設定します。-norecurse はデフォルトです。-recurse が指定された場合、基底クラスが含まれます。「クラスのすべてのメンバー関数にブレークポイントを設定する」も参照してください。
file_name 内のいずれかの関数が呼び出された場合、実行を停止します。
C++ のみ: すべての非メンバー関数 name にブレークポイントを設定します。
C++ のみ: 次の関数にブレークポイントを設定します。すべてのメンバー関数 name。「異なるクラスのメンバー関数にブレークポイントを設定する」を参照。
C++ のみ: オブジェクト object_expression から呼び出された場合に、クラスおよびそのすべての基底クラスの非静的メソッドへのエントリにブレークポイントを設定します。-recurse はデフォルトです。-norecurse が指定された場合、基底クラスは含まれません。「オブジェクトにブレークポイントを設定する」も参照してください。
line_number は、ソースコード行の番号です。
function は、関数の名前です。
class_name は、C++ の class、struct、union、または template クラスの名前です。
mode はメモリーのアクセス方法を指定します。次の文字 (複数可) で構成されます。
指定したアドレスのメモリーが読み取られたことを示します。
メモリーへの書き込みが実行されたことを示します。
メモリーが実行されたことを示します。
mode には、次を含めることもできます。
アクセス後にプロセスを停止します (デフォルト)。
アクセス前にプロセスを停止します。
name は、C++ 関数名です。
object_expression は、C++ オブジェクトを示します。
variable は、変数の名前です。
ネイティブモードでは、次の修飾子が有効です。
condition_expression が真の場合にだけ、指定したイベントが 発生します。
指定したイベントが function の範囲内で発生した場合にだけ、実行が停止します。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。number に到達すると、実行が停止され、カウンタが 0 にリセットされます。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。実行は停止されません。
イベントの発生時に削除される一時的なブレークポイントを作成します。
無効状態のブレークポイントを作成します。
命令レベルのバリエーションを実行します。たとえば、step は命令レベルのステップ実行になり、at では行番号ではなくテキストアドレスを引数として指定します。
このイベントをデバッグ中は常に有効にします。一部のイベント (ブレークポイントなど) は、常に有効にするのには適していません。 delete all は、常に有効なハンドラを削除しません。削除するには、delete hid を使用します。
status コマンドからイベントを隠ぺいします。一部のインポートモジュールでこれが使用されることがあります。そのようなモジュールを表示するには、status -h を使用します。
指定した LWP で指定したイベントが発生した場合にだけ、実行が停止します。
指定したスレッドで指定したイベントが発生した場合にだけ、実行が停止します。
Java モードでは、次の構文が有効です。
class_name.field_name によって指定されたメモリーがアクセスされた場合、実行を停止します。
line_number で実行を停止します。
file_name の line_number で実行を停止します。
class_name で field_name の値が変更された場合に実行を停止します。
いずれかのクラスが読み込まれた場合に実行を停止します。
class_name が読み込まれた場合に実行を停止します。
いずれかのクラスが読み込み解除された場合に実行を停止します。
class_name が読み込み解除された場合に実行を停止しま す。
condition_expression で指定した条件が真になる場合に実行を停止します。
class_name. method_name に入力され、最初の行が実行される直前に、実行を停止します。パラメータが指定されておらず、メソッドがオーバーロードされている場合は、メソッドのリストが表示されます。
class_name. method_name に入力され、最初の行が実行される直前に、実行を停止します。
class_name.method_name で指定した、すべての非メンバーメソッドでブレークポイントを設定します。
class_name.method_name で指定した、すべての非メンバーメソッドでブレークポイントを設定します。
Java の例外が投げられた場合に実行を停止します。
type で指定した種類の Java の例外が投げられた場合に実行を停止します。
ここで
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
condition_expression には、任意の式を指定できます。ただし、評価結果が整数型になる必要があります。
field_name は、クラス内のフィールド名です。
file_name は、ファイルの名前です。
line_number は、ソースコード行の番号です。
method_name は、Java メソッドの名前です。
mode はメモリーのアクセス方法を指定します。次の文字 (複数可) で構成されます。
指定したアドレスのメモリーが読み取られたことを示します。
メモリーへの書き込みが実行されたことを示します。
mode には、次を含めることもできます。
アクセス前にプロセスを停止します。
プログラムカウンタは、問題のある個所を示します。
parameters は、メソッドのパラメータです。
type は、Java の例外の種類です。type には、-unhandled または -unexpected を指定できます。
Java モードでは、次の修飾子が有効です。
condition_expression が真の場合にだけ、指定したイベントが 発生します。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。number に到達すると、実行が停止され、カウンタが 0 にリセットされます。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。実行は停止されません。
イベントの発生時に削除される一時的なブレークポイントを作成します。
無効状態のブレークポイントを作成します。
マシンレベルのブレークポイントの設定については、「stopi コマンド」も参照してください。
全イベントのリストと構文については、「イベント指定の設定」を参照してください。
stopi コマンドは、マシンレベルのブレークポイントを設定します。ネイティブモードでだけ有効です。
stopi コマンドの一般構文は、次のとおりです。
stopi event_specification [modifier]
指定イベントが発生すると、プロセスが停止されます。
次の構文が有効です。
address の場所で実行を停止します。
function が呼び出されたときに実行を停止します。
ここで
address は、アドレスとなった式またはアドレスとして使用可能な式です。
function は、関数の名前です。
全イベントのリストと構文については、「イベント指定の設定」を参照してください。
suppress コマンドは、実行時検査中のメモリーエラーの報告を抑止します。ネイティブモードでだけ有効です。
dbx 環境変数 rtc_auto_suppress が on である場合、指定場所におけるメモリーエラーは 1 度だけ報告されます。
suppress コマンドと unsuppress コマンドの履歴 (-d オプションと -reset オプションを指定するものは含まない)。
デバッグ用にコンパイルされなかった関数で抑止されているエラーのリスト (デフォルト抑止)。このリストは、ロードオブジェクト単位です。これらのエラーの抑止を解除する唯一の方法は、unsuppress コマンドを -d オプションを付けて使用することです。
errors をさらに抑止することによって、全ロードオブジェクトに対するデフォルト抑止を変更します。
errors をさらに抑止することによって、load_objects のデフォルト抑止を変更します。
エラー位置における現在のエラーを抑止します。
デフォルト抑止としてオリジナルの値を設定します (起動時)。
id (unsuppress コマンドで取得できる) によって指定される抑止解除イベントを削除します (「unsuppress コマンド」参照)。
unsuppress コマンドによって指定される抑止解除イベントすべてを削除します (「unsuppress コマンド」参照)。
あらゆる場所における errors を抑止します。
functions リスト、files リスト、load_objects リストにおける errors を抑止します。
line における errors を抑止します。
file の line における errors を抑止します。
address における errors を抑止します。
ここで
address は、メモリーアドレスです。
errors は空白文字で区切られた次の要素で構成されます。
すべてのエラー
メモリーリークの可能性 - ブロック中のアドレス
メモリーリークの可能性 - レジスタ中のアドレス
不正解放
重複解放
メモリーリーク
境界整列を誤った解放
境界整列を誤った読み取り
境界整列を誤った書き込み
メモリー不足
配列の範囲外のメモリーからの読み取り
非割り当てメモリーからの読み取り
非初期化メモリーからの読み取り
配列の範囲外のメモリーへの書き込み
読み取り専用メモリーへの書き込み
非割り当てメモリーへの書き込み
ブロック使用状況 (割り当てられているメモリー)。biu はエラーではありませんが、errors とまったく同じように suppress コマンドで使用できます。
file は、ファイルの名前です。
files は、1 個または複数のファイル名です。
functions は、1 個または複数の関数名です。
line は、ソースコード行の番号です。
load_objects は、1 個または複数のロードオブジェクト名です。
エラーの抑止については、「エラーの抑止」を参照してください。
エラーの抑止解除については、「unsuppress コマンド」を参照してください。
sync コマンドは、指定の同期オブジェクトに関する情報を表示します。ネイティブモードでだけ有効です。
sync コマンドが実行できるのは、Solaris プラットフォームのみです。
address における同期オブジェクトに関する情報を表示します。
ここで
address は、同期オブジェクトのアドレスです。
syncs コマンドは、同期オブジェクト (ロック) すべてを一覧表示します。ネイティブモードでだけ有効です。
syncs コマンドが実行できるのは、Solaris プラットフォームのみです。
syncs
thread コマンドは、現在のスレッドの表示や変更を行います。
現在のスレッドを表示します。
スレッド thread_id に切り替えます。
次の構文で thread_id がない場合は、現在のスレッドが仮定されます。
指定スレッドに関する既知情報すべてを出力します。OpenMP スレッドの場合、この情報には OpenMP のスレッド ID、並列領域 ID、タスク領域 ID、およびスレッドの状態が含まれます。
指定 (または現在の) スレッドを隠ぺいします。通常のスレッドリストには表示されなくなります。
指定 (または現在の) スレッドを隠ぺい解除します。
すべてのスレッドを隠ぺい解除します。
指定した (または現在の) スレッドの実行を一時停止します。中断されているスレッドは、スレッドリストに「S」の文字とともに表示されます。
-suspend の効果を解除します。
ほかのスレッドをブロックしている指定スレッドが保持しているロックすべてを一覧表示します。
指定スレッドをブロックしている同期オブジェクトがある場合、そのオブジェクトを表示します。
ここで
thread_id は、スレッド ID です。
現在のスレッドを表示します。
スレッド thread_id に切り替えます。
次の構文で thread_id がない場合は、現在のスレッドが仮定されます。
指定スレッドに関する既知情報すべてを出力します。
指定 (または現在の) スレッドを隠ぺいします。通常のスレッドリストには表示されなくなります。
指定 (または現在の) スレッドを隠ぺい解除します。
すべてのスレッドを隠ぺい解除します。
指定した (または現在の) スレッドの実行を一時停止します。中断されているスレッドは、スレッドリストに「S」の文字とともに表示されます。
-suspend の効果を解除します。
thread_id が所有する Java モニターを表示します。
thread_id がブロックされている Java モニターを表示します。
ここで
thread_id は t@number の dbx 形式のスレッド ID またはスレッドを指定した Java スレッド名です。
threads コマンドは、すべてのスレッドを一覧表示します。
既知のスレッドすべてのリストを出力します。
通常出力されないスレッド (ゾンビ) を出力します。
全スレッドを出力するか、またはスレッドをフィルタリングするかを指定します。デフォルトではスレッドがフィルタリングされます。フィルタリングがオンになっている場合、thread -hide コマンドによって隠されているスレッドはリスト表示されません。
IDE で、スレッドリストの自動更新を有効にします。
現在のモードをエコーします。
各行は、次の項目で構成されます。
* (アスタリスク) は、ユーザーの注意を必要とするイベントがこのスレッドで発生したことを示します。通常は、ブレークポイントに付けられます。
アスタリスクの代わりに 'o' が示される場合は、dbx 内部イベントが発生しています。
> (矢印) は、現在のスレッドを示します。
t@num はスレッド ID であり、特定のスレッドを指します。number は、thr_create が返す thread_t の値になります。
b l@num は、そのスレッドが結合されていることを示します (指定した LWP に現在割り当てられている)。a l@num は、スレッドがアクティブであることを示します (現在実行が予定されている)。
thr_create に渡されたスレッドの開始関数。?() は開始関数が不明であることを示します。
スレッドの状態。次のいずれかになります。
監視
実行中
スリープ
待つ
未知
ゾンビ
スレッドが現在実行している関数
既知のスレッドすべてのリストを出力します。
通常出力されないスレッド (ゾンビ) を出力します。
全スレッドを出力するか、またはスレッドをフィルタリングするかを指定します。デフォルトではスレッドがフィルタリングされます。
IDE で、スレッドリストの自動更新を有効にします。
現在のモードをエコーします。
各行は、次の項目で構成されます。
> (矢印) は、現在のスレッドを示します。
t@number は dbx スタイルスレッド ID を示します。
スレッドの状態。次のいずれかになります。
監視
実行中
スリープ
待つ
未知
ゾンビ
単一引用符内のスレッド名
スレッドの優先順位を示す番号
trace コマンドは、実行したソース行、関数呼び出し、変数の変更を表示します。
トレース速度は dbx 環境変数 trace_speed によって設定します。
dbx が Java モードで、トレースのブレークポイントをネイティブコードで設定する場合は、joff コマンドを使用してネイティブモードに切り替えるか (「joff コマンド」参照)、traceコマンドの前に native を追加します (「native コマンド」参照)。
dbx が JNI モードで、トレースのブレークポイントを Java コードで設定する場合は、trace コマンドの前に java を追加します (「java コマンド」参照)。
trace コマンドの一般構文は、次のとおりです。
trace event_specification [modifier]
指定イベントが発生すると、トレースが出力されます。
ネイティブモードでは、次の構文が有効です。
指定 file_name に全トレース出力を送ります。トレース出力を標準出力に戻すには、file_name の代わりに - を使用します。トレース出力は常に file_name に追加されます。トレース出力は、dbx がプロンプト表示するたび、またアプリケーションが終了するたびにフラッシュされます。dbx 接続後にプログラムの実行を再開するか新たに実行を開始すると、file_name が常に開きます。
各ソース行、関数呼び出し、および戻り値をトレースします。
指定 function の中で各ソース行をトレースします。
指定のソース line_number をトレースします。
指定 function の呼び出しとこの関数からの戻り値をトレースします。
file_name 内のいずれかの関数の呼び出しとその関数からの戻り値をトレースします。
function という名前のメンバー関数の呼び出しをトレースします。
functionという名前の関数が呼び出されるとトレースします。
class のメンバー関数の呼び出しをトレースします。
variable の変更をトレースします。
ここで
file_name は、トレース出力の送信先ファイルの名前です。
function は、関数の名前です。
line_number は、ソースコード行の番号です。
class は、クラスの名前です。
variable は、変数の名前です。
ネイティブモードでは、次の修飾子が有効です。
condition_expression が真の場合にだけ、指定したイベントが 発生します。
指定したイベントが関数で発生した場合にだけ、実行が停止します。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。number に到達すると、実行が停止され、カウンタが 0 にリセットされます。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。実行は停止されません。
イベントの発生時に削除される一時的なブレークポイントを作成します。
無効状態のブレークポイントを作成します。
命令レベルのバリエーションを実行します。たとえば、step は命令レベルのステップ実行になり、at では行番号ではなくテキストアドレスを引数として指定します。
このイベントをデバッグ中は常に有効にします。一部のイベント (ブレークポイントなど) は、常に有効にするのには適していません。 delete all は、常に有効なハンドラを削除しません。削除するには、delete hid を使用します。
status コマンドからイベントを隠ぺいします。一部のインポートモジュールでこれが使用されることがあります。そのようなモジュールを表示するには、status -h を使用します。
指定した LWP で指定したイベントが発生した場合にだけ、実行が停止します。
指定したスレッドで指定したイベントが発生した場合にだけ、実行が停止します。
Java モードでは、次の構文が有効です。
指定 file_name に全トレース出力を送ります。トレース出力を標準出力に戻すには、file_name の代わりに - を使用します。トレース出力は常に file_name に追加されます。トレース出力は、dbx がプロンプト表示するたび、またアプリケーションが終了するたびにフラッシュされます。file_name は、接続後の新規実行時や再開時に必ずオープンし直されます。
line_number をトレースします。
指定したソース file_name.line_number をトレースします。
次の呼び出しと、戻り値をトレースします。class_name. method_name。
class_name.method_name([parameters]) の呼び出しと、このメソッドからの戻り値をトレースします。
class_name.method_name という名前のメソッドの呼び出しと、このメソッドからの戻り値をトレースします。
class_name.method_name [(parameters)] と言う名前のメソッドの呼び出しと、このメソッドからの戻り値をトレースします。
ここで
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
file_name は、ファイルの名前です。
line_number は、ソースコード行の番号です。
method_name は、Java メソッドの名前です。
parameters は、メソッドのパラメータです。
Java モードでは、次の修飾子が有効です。
condition_expression が真の場合にだけ、指定したイベントが発生し、トレースが出力されます。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。number に到達すると、トレースが出力され、カウンタが 0 にリセットされます。
カウンタが 0 で開始され、イベントの発生ごとに増分されます。実行は停止されません。
イベントが発生してトレースが出力されるときに削除される、一時的なブレークポイントを作成します。-temp を -count とともに使用した場合は、カウンタが 0 にリセットされたときだけブレークポイントが削除されます。
無効状態のブレークポイントを作成します。
全イベントのリストと構文については、「イベント指定の設定」を参照してください。
traceiコマンドは、マシン命令、関数呼び出し、変数の変更を表示します。ネイティブモードでだけ有効です。
tracei は、trace event-specification -instr の省略形です。ここで、-instr 修飾子を指定すると、ソース行の細分性ではなく命令の細分性でトレースが行われます。イベント発生時に出力される情報は、ソース行の書式ではなく逆アセンブリの書式になります。
各マシン命令をトレースします。
指定 function の中で書く命令をトレースします。
address にある命令をトレースします。
指定 function の呼び出しとこの関数からの戻り値をトレー スします。
function という名前のメンバー関数の呼び出しをトレースします。
functionという名前の関数が呼び出されるとトレースします。
class のメンバー関数の呼び出しをトレースします。
variable の変更をトレースします。
ここで
filename は、トレース出力の送信先ファイルの名前です。
function は、関数の名前です。
line は、ソースコード行の番号です。
class は、クラスの名前です。
variable は、変数の名前です。
詳細については、「trace コマンド」を参照してください。
uncheck コマンドは、メモリーのアクセス、リーク、使用状況の検査を使用不可にします。ネイティブモードでだけ有効です。
検査の現在のステータスを出力します。
アクセス検査を停止します。
リーク検査を停止します。
memuse 検査を停止します (リーク検査も停止されます)。
uncheck -access、uncheck -memuse と同じです。
suppress all (functions files loadobjects に対する) と同じです。
ここで
functions は、1 個または複数の関数名です。
files は、1 個または複数のファイル名です。
loadobjects は、1 個または複数のロードオブジェクト名です。
検査をオンにする方法については、「check コマンド」を参照してください。
エラーの抑止解除については、「suppress コマンド」を参照してください。
実行時検査の概要については、「概要」を参照してください。
undisplay コマンドは、display コマンドを取り消します。
display expression コマンドを取り消します。
n 個の display コマンドを取り消します。
すべての display コマンドを取り消します。
ここで
expression は、有効な式です。
display expression,... または display identifier, ... コマンドを取り消します。
n 個の display コマンドを取り消します。
すべての display コマンドを取り消します。
ここで
expression は、有効な Java の式です。
field_name は、クラス内のフィールド名です。
identifier は this を含む局所変数またはパラメータで、現在のクラスインスタンス変数 (object_name.field_name) またはクラス (静的) 変数 (class_name.field_name) です。
unhide コマンドは、hide コマンドを取り消します。ネイティブモードでだけ有効です。
すべてのスタックフレームフィルタを削除します。
スタックフレームフィルタ regular_expression を削除します。
スタックフレームフィルタ番号 number を削除します。
ここで
regular_expression は、正規表現です。
number は、スタックフレームフィルタの番号です。
hide コマンド (「浮動小数点例外を捕捉する」参照) は、番号を持つフィルタを一覧表示します。
unintercept コマンドは、intercept コマンドを取り消します (C++ のみ)。ネイティブモードでだけ有効です。
種類が intercepted_typename の送出を intercept リストから削除します。
すべての種類の送出を intercept リストから削除します。
excluded_typename を excluded リストから削除します。
すべての種類の送出を excluded リストから削除しま す。
阻止対象の型を一覧表示します。
ここで
included_typename および excluded_typename は、List <int> や unsigned short などの例外仕様です。
unsuppress コマンドは、suppress コマンドを取り消します。ネイティブモードでだけ有効です。
suppress コマンドと unsuppress コマンドの履歴 (-d オプションと -reset オプションを指定するものは含まない)。
デバッグ用にコンパイルされなかった関数で抑止解除されているエラーのリスト。このリストは、ロードオブジェクト単位です。エラーを抑止する方法は、-d オプションを付けて suppress コマンド (「suppress コマンド」参照) を使用することだけです。
errors をさらに抑止解除することによって、全ロードオブジェクトに対するデフォルト抑止を変更します。
errors をさらに抑止解除することによって、loadobjects のデフォルト抑止を変更します。
エラー位置における現在のエラーを抑止解除します。
デフォルト抑止マスクとしてオリジナルの値を設定します (起動時)。
あらゆる場所における errors を抑止解除します。
functions リスト、files リスト、loadobjects リストにおける errors を抑止します。
line における errors を抑止解除します。
file の line における errors を抑止解除します。
address における errors を抑止解除します。
unwatch コマンドは、watch コマンドを取り消します。ネイティブモードでだけ有効です。
watch expression コマンドを取り消します。
n で指定された番号の watch コマンドを取り消します。
すべての watch コマンドを取り消します。
ここで
expression は、有効な式です。
up コマンドは、呼び出しスタックを上方向に移動します (main に近づく)。このコマンドの構文および機能は、ネイティブモードと Java モードで同一です。
呼び出しスタックを 1 レベル上方向に移動します。
呼び出しスタックを number レベルだけ上方向に移動します。
呼び出しスタックを上方向に移動しますが、隠しフレームをとばすことはしません。
ここで
number は、呼び出しスタックレベルの数です。
use コマンドは、ディレクトリ検索パスの表示や変更を行います。ネイティブモードでだけ有効です。
このコマンドは古いため、次の pathmap コマンドにマッピングしてあります。
use は、pathmap -s と同じです。
use directory は、pathmap directory と同じです。
watch コマンドは、すべての停止ポイントの式を、その停止ポイントでの現在のスコープ内で評価して出力します。式は入力時に分析されないので、式の正確さをすぐに確認できません。watch コマンドはネイティブモードだけで有効です。
表示されている式のリストを表示します。
式 expression の値を、すべての停止ポイントで表示します。
フラグの意味については、「print コマンド」を参照してください。
ここで
expression は、有効な式です。
format は、式の出力時に使用する形式です。詳細については、「print コマンド」を参照してください。
ネイティブモードでは、whatis コマンドは式の型または型の宣言を出力します。該当する場合は、OpenMP のデータ共有属性情報も出力します。
Java モードでは、whatis コマンドは識別子の宣言を出力します。識別子がクラスの場合は、クラスのメソッド (継承されたすべてのメソッドを含む) を出力します。
型ではない name の宣言を出力します。
型 type の宣言を出力します。
式 expression の型を出力します。
ここで
name は、型ではない名前です。
type は、型名です。
expression は、有効な式です。
-d は、静的型ではなく動的型を表示します (C++ のみ)。
-e は、式の型を表示します。
-n は、型ではない宣言を表示します。-n はオプションを指定せずに whatis コマンドを使用したときのデフォルト値であるため、-n を指定する必要はありません。
-r は、基底クラスに関する情報を出力します (C++ のみ)。
-t は、型の宣言を表示します。
C++ のクラスや構造体に対して whatis コマンドを実行すると、定義済みメンバー関数すべて (未定義メンバー関数は除く)、静的データメンバー、クラスのフレンド、およびそのクラス内で明示的に定義されているデータメンバーのリストが表示されます。
-r (recursive) オプションを指定すると、継承クラスからの情報が追加されます。
-d フラグを -e フラグと併用すると、式の動的型が使用されます。
C++ の場合、テンプレート関係の識別子は次のように表示されます。
テンプレート定義は whatis -t によって一覧表示されます。
関数テンプレートのインスタンス化は、whatis によって一覧表示されます。
クラステンプレートのインスタンス化は、whatis -t によって一覧表示されます。
identifier の宣言を出力します。
ここで
identifier は、クラス、現在のクラス内のメソッド、現在のフレーム内の局所変数、現在のクラス内のフィールドのいずれかです。
when コマンドは、指定したイベントが発生したときに、コマンドを実行します。
dbx が Java モードで、when のブレークポイントをネイティブコードで設定する場合は、joff コマンドを使用してネイティブモードに切り替えるか (「joff コマンド」を参照)、when コマンドの前に native を追加します (「native コマンド」参照)。
dbx が JNI モードで、when のブレークポイントを Java コードで設定する場合は、when コマンドの前に java を追加します (「java コマンド」を参照)。
when コマンドの一般構文は、次のとおりです。
when event_specification [modifier]{command; ... }
指定イベントが発生すると、コマンドが実行されます。when コマンドで禁止されているコマンドには次のものがあります。
attach
debug
next
replay
rerun
restore
run
save
step
オプションなしの cont コマンドは無視されます。
ネイティブモードでは、次の構文が有効です。
line_number に到達したら、command を実行します。
procedure が呼び出されたら、command を実行します。
ここで
line_number は、ソースコード行の番号です。
command は、コマンドの名前です。
procedure は、手続きの名前です。
Java モードでは、次の構文が有効です。
ソースの line_number に到達したときにコマンドを実行します。
file_name. line_number に到達したときにコマンドを実行します。
class_name. method_name が呼び出されたときにコマンドを実行します。
class_name. method_name([parameters]) が呼び出されたときにコマンドを実行します。
class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。
file_name は、ファイルの名前です。
line_number は、ソースコード行の番号です。
method_name は、Java メソッドの名前です。
parameters は、メソッドのパラメータです。
全イベントのリストと構文については、「イベント指定の設定」を参照してください。
下位レベルのイベントの発生時にコマンドを実行する方法については、「wheni コマンド」を参照してください。
wheni コマンドは、指定した下位レベルのイベントが発生したときに、コマンドを実行します。ネイティブモードでだけ有効です。
wheni コマンドの一般構文は、次のとおりです。
wheni event_specification [ modifier]{command... ; }
指定イベントが発生すると、コマンドが実行されます。
次の構文が有効です。
address_expression に到達したときに、command を実行します。
ここで
address は、アドレスとなった式またはアドレスとして使用可能な式です。
command は、コマンドの名前です。
全イベントのリストと構文については、「イベント指定の設定」を参照してください。
where コマンドは、呼び出しスタックを出力します。OpenMP のスレーブスレッドの場合、関連するフレームがアクティブ状態であれば、マスタースレッドのスタックトレースも出力されます。
手続きトレースバックを出力します。
トレースバックの上から number 個のフレームを出力します。
フレーム number からトレースバックを開始します。
fp レジスタに address_expression 値がある場合、トレースバックを出力します。
隠しフレームを含めます。
関数名を持つライブラリ名を含めます。
クィックトレースバック (関数名のみ)。
冗長トレースバック (関数の引数と行情報を含む)。
ここで
number は、呼び出しタックフレームの数です。
これらの構文はスレッドや LWP ID を結合させることにより、指定エンティティのトレースバックを取り出すことがあります。
-fp オプションは、fp (frame pointer) レジスタが壊れていてイベント dbx が呼び出しスタックを正しく再構築できないときに役立ちます。このオプションは、値が正しい fp レジスタ値かをテストするためのショートカットを提供します。指定した正しい値が特定されたことが確認できた場合、assign コマンドや lwp コマンドを使用して設定できます。
メソッドのトレースバックを出力します。
トレースバックの上から number 個のフレームを出力します。
フレーム number からトレースバックを開始します。
クィックトレースバック (関数名のみ)。
冗長トレースバック (関数の引数と行情報を含む)。
ここで
number は、呼び出しタックフレームの数です。
thread_id は、dbx 形式のスレッド ID またはスレッドを指定した Java スレッド名です。
whereami コマンドは、現在のソース行を表示します。ネイティブモードでだけ有効です。
現在の位置 (スタックのトップ) に該当するソース行、および現在のフレームに該当するソース行を表示します (前者と異なる場合)。
前述と同じ。ただし、ソース行ではなく現在の逆アセンブル命令が出力されます。
whereis コマンドは、特定の名前の使用状況すべて、またはアドレスの英字名を出力します。ネイティブモードでだけ有効です。
name の宣言をすべて出力します。
address_expression の場所を出力します。
ここで
name は、変数、関数、クラステンプレート、関数テンプレートといった、スコープ内の読み込み可能オブジェクトの名前です。
address は、アドレスとなった式またはアドレスとして使用可能な式です。
which コマンドは、指定の名前の完全修飾形を出力します。ネイティブモードでだけ有効です。
name の完全修飾形を出力します。
type の完全修飾形を出力します。
ここで
name は、変数、関数、クラステンプレート、関数テンプレートといった、スコープ内の物の名前です。
type は、型名です。
-n は、型以外の完全修飾形を表示します。-n はオプションを指定せずに which コマンドを使用したときのデフォルト値であるため、n を指定する必要はありません。
-t は、型の完全修飾形を表示します。
whocatches コマンドは、C++ 例外が捕獲される場所を示します。ネイティブモードでだけ有効です。
型 type の例外が現在の実行点で送出された場合にどこで捕獲されることになるかを示します (捕獲されるとしたら)。次に実行される文が throw x であり (x の型は type)、これを捕獲する catch 節の行番号、関数名、フレーム番号を表示するとします。
このとき、送出を行う関数の中に捕獲点がある場合には、"type is unhandled" が返されます。
ここで
type は、例外の型です。