JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  dbx の概要

2.  dbx の起動

3.  dbx のカスタマイズ

4.  コードの表示とコードへの移動

5.  プログラムの実行制御

6.  ブレークポイントとトレースの設定

ブレークポイントを設定する

ソースコードの特定の行に stop ブレークポイントを設定する

関数に stop ブレークポイントを設定する

C++ プログラムに複数のブレークポイントを設定する

異なるクラスのメンバー関数にブレークポイントを設定する

クラスのすべてのメンバー関数にブレークポイントを設定する

非メンバー関数に複数のブレークポイントを設定する

オブジェクトにブレークポイントを設定する

データ変更ブレークポイントを設定する

特定アドレスへのアクセス時にプログラムを停止する

変数の変更時にプログラムを停止する

条件付きでプログラムを停止する

ブレークポイントのフィルタの設定

関数の戻り値をフィルタとして使用

局所変数にデータ変更ブレークポイントを設定する

条件付イベントでのフィルタの使用

トレースの実行

トレースを設定する

トレース速度を制御する

ファイルにトレース出力を転送する

ソース行で when ブレークポイントを設定する

動的にロードされたライブラリにブレークポイントを設定する

ブレークポイントをリストおよびクリアする

ブレークポイントとトレースポイントの表示

ハンドラ ID を使用して特定のブレークポイントを削除

ブレークポイントを有効および無効にする

イベント効率

7.  呼び出しスタックの使用

8.  データの評価と表示

9.  実行時検査

10.  修正継続機能 (fix と cont)

11.  マルチスレッドアプリケーションのデバッグ

12.  子プロセスのデバッグ

13.  OpenMP プログラムのデバッグ

14.  シグナルの処理

15.  dbx を使用してプログラムをデバッグする

16.  dbx を使用した Fortran のデバッグ

17.  dbx による Java アプリケーションのデバッグ

18.  機械命令レベルでのデバッグ

19.  dbx の Korn シェル機能

20.  共有ライブラリのデバッグ

A.  プログラム状態の変更

B.  イベント管理

C.  マクロ

D.  コマンドリファレンス

索引

イベント効率

デバッグ中のプログラムの実行時間に関するオーバーヘッドの量はイベントの種類によって異なります。もっとも単純なブレークポイントのように、実際はオーバーヘッドが何もないイベントもあります。1 つのブレークポイントしかないイベントも、オーバーヘッドは最小です。

実際のブレークポイントがときには何百にもなることのある多重ブレークポイント (inclass など) は、コマンド発行時にのみオーバーヘッドがあります。これは、dbx が永続的ブレークポイントを使用するためです。永続的ブレークポイントは、プロセスに常に保持され、停止するたびに取り除かれたり、cont コマンドのたびに置かれたりすることはありません。


注 - step コマンドおよび next コマンドの場合、デフォルトでは、プロセスが再開される前にすべてのブレークポイントが取り除かれ、ステップが完了するとそれらは再び挿入されます。したがって、多くのブレークポイントを使用したり、多くのクラスで多重ブレークポイントを使用したりしているとき、step コマンドおよび next コマンドの速度は大幅に低下します。dbx step_events 環境変数を使用して、各 step コマンドまたは next コマンドのあとにブレークポイントを取り出して再挿入するかどうかを制御します。


自動ステップ実行を利用するイベントはもっとも低速です。これは、各ソース行をステップ実行する単純な trace step コマンドの場合と同様にはっきりしています。一方、stop change expressiontrace cond variable のようなイベントは、自動的にステップ実行するだけでなく、各ステップで式や変数を評価する必要があります。

これらのイベントは非常に低速ですが、イベントと修飾語 -in を使用した関数とを結び付けることで、効率が上がることがよくあります。例:

trace next -in mumble
stop change clobbered_variable -in lookup

trace -in main を使用しないでください。これは main によって呼び出された関数の中でも、trace が有効になるためです。関数 lookup() が変数の値を頻繁に変更すると思われる場合には、この方法を使用してください。