DBX(1)

名前
dbx - ソースレベル・デバッグ用ツール

形式
dbx [ -c cmd ] [ -C ] [ -d ] [ -e ] [ -f ] [ -h ] [ -Idir ] [ -k ] [ -q ] [ -r ] [ -R ] [ -s startup ] [ -S ] [ -V ] [ -wcount ] [ -x exec32 ] [ execfile [ .class | .jar ] [ corefile | process-id ] ] [ arguments ]

機能説明

dbx は、C++、 ANSI C、 Fortran 77 、Fortran 90 と Java で書かれたプログラムの ソースレベルでのデバッグと実行を行うユーティリティです。

execfile は、 Sun Compiler で execfile または関連するオブジェクトファイルにデバッグ用シンボルを出力する -g オプションを付けてコンパイルされた実行可能ファイルです。 Java コードの場合、execfile は .class または .jar ファイルです。 このシンボルテーブルには、 execfile を作成するのに使用されたすべてのソースファイルの名前 (すべて 中身を見ることができる) と、さまざまなデバッグ情報が含まれています。 -g オプションでコンパイルされていないプログラムでは、 限られた一部のデバッグ機能しか使用することができません。

シンボルテーブル情報は、コンパイラが作成する各オブジェクトファイル の中に少しずつ格納されます。コンパイルでオブジェクトファイルが 生成されない場合、すべてのデバッグ情報は execfile に格納されます。デバッグ情報をオブジェクトファイルに分散することにより、 dbx は、デバッグ情報を必要に応じて読み取りまたはロードできます。 この機能のことを、「自動読み取り」といいます。 オブジェクトファイルを元の位置から移動する必要がある場合は、 dbx にその場所を指定してください ( pathmap コマンド参照)。 -xs オプションによって、自動読み込みを使用しないようにすることができます。 -xs オプションを指定してコンパイルすると、リンカーはすべてのデバッグ情報を 実行可能ファイルに格納します。

dbx の起動時に execfile を指定しなかった場合、 デバッグするプログラムを指定するには、 debug コマンドを使用します。

procss-id のプロセスをデバッグする場合に、ファイル名 execfile が分からない場合、 - (ダッシュ) を execfile の代わりに指定し、プロセス ID process-id をオプションの引数として入力すると、 そのプロセスを dbx に接続することができます。

コアファイル corefile が引数として指定された場合、 dbx は、コアファイルが作成されたときのプログラムの状態を 調べることができます。

-r オプションを指定したときのみ、プログラムに渡される arguments を指定できます。Java プログラムの場合、JVM[tm] ソフトウェアに渡される引数ではなく、プログラムに渡される引数だけを指定します。

dbx は起動時に、インストールディレクトリで最初に .dbxrc を検索します。.dbxrc が見つからない場合、dbx は ./.dbxrc を検索します (ksh モード)。./.dbxrc が見つからないと、dbx は警告メッセージを出力し、~/.dbxrc を検索します (dbx モード)。

実行時検査 (RTC) は、ブレークポイントの設定や 変数の検査を行うことができる、 dbx の機能です。 RTC を使用すれば、 どの段階でもアプリケーションの実行時のエラーを発見することができます。 さらに、メモリーの使用状況を監視することもできます。

コンパイル時に -g オプションを使用すると、 エラーに関連しているソース行の番号がエラーメッセージに表示されます。 RTC は -O 最適化オプションでコンパイルしたプログラムを検査することもできます。 RTC を使用するために、コンパイルやリンクをやり直したり、 メークファイルを変更したりする必要はありません。

RTC が適切に動作するためには、 libc を動的にリンクし、標準の libc 関数 malloc/free/realloc を使用する必要があります。

RTC を使用するには、プログラムを実行する前に dbx セッションで check type-of-checking コマンドを実行してください。 dbx を -C オプション付きで起動すると、RTC ライブラリを起動時に読み込むことができます。 また、RTC をバッチモードで使用することも可能です。詳細は bcheck(1) を参照してください。 アクセス検査は SPARC アーキテクチャ上でのみサポートされています。

オプション

-c cmd
    プログラムを読み込んだ後、入力用のプロンプトを表示する直前に cmd で指定したコマンドを実行します。 cmd に複数の dbx コマンドを指定する場合、コマンドの文字列を 2 重引用符で囲み、 各コマンドをセミコロンで区切ってください。 コマンド内に $ (ドル記号) がある場合には、 2 重引用符は無効になるので、 複数のコマンドを囲んで指定することはできません。

-C  RTC ライブラリの読み込みを早い段階に(起動時に)行います (これによって実行時検査が有効になるわけではありません)。 起動時に読み込まない場合は、RTC ライブラリは check コマンドの設定の後、次の実行時に読み込まれます。

-d  startup を処理した後に削除します。

-e  入力コマンドを表示します。

-f  一致していない場合もコアファイルを強制的に読み込みます。

-h  入力を求めるプロンプトの前にヘルプを表示します。

-I dir
    ソースファイルを検索するディレクトリのリストに dir を追加します。通常、 dbx は現在のディレクトリと execfile が存在するディレクトリしか検索しません。ディレクトリ検索パスは、 pathmap コマンドでも設定できます。

-k  キーボードをアップダウン変換モードにしてプログラムをデバッグします。 このオプションは、プログラムがアップダウンコード解析を 使用する場合に必要です。

-q  非出力 (quiet) モード。"シンボルテーブルを読み込んでいます" と "プロセス xx を接続しました" ということを示す 2 つのメッセージを抑制します。

-r  execfile をすぐに実行します。 execfile ファイル名の後にはパラメータ (リダイレクトも含む) を続けます。 プログラムが正常終了した場合、 dbx は終了します。正常終了しなかった場合、 dbx は終了の理由を報告して、応答を待ちます。

-R  dbx の README ファイルを表示します。

-s startup
    .dbxrc の代わりに、 startup スクリプトから初期化コマンドを読み込みます。

-S  標準でインストールされた .dbxrc の読み取りを抑制します。

-V  dbx のバージョンを表示します。

-w  where コマンドの実行時に、ここで指定した最初の N 個のフレームをスキップします。

-xexec32
    SPARC-V9 バイナリをサポートするシステム上で実行される 64 ビット dbx バイナリの使用を抑制し、代わりに SPARC-V8 32 ビットバイナリを使用します。

使用法

主に使用する基本的なコマンドは、次のとおりです。

run デバッグするプログラムを実行

where
    行番号付きスタックトレース

print
    変数を出力

stop
    ブレークポイントを設定

  スコープ決定規則

dbx は、スコープ(有効範囲)の衝突を現在のファイルと関数にもとづいて解析します。 これらの値は、実行時にファイルや関数が実行され、終了するたびに更新されます。 file や func コマンドを使用して、明示的にこれらの値を変更することもできます。 現在の関数が変更されると、現在のファイルも同時に変更されます。 また、現在のファイルが変更されると、関数も同時に変更されます。

  スレッド ID
いくつかのコマンドでは、 id が指定されると、スレッド ID (tid) または 軽量プロセス (LWD) ID (lid) を参照する場合があります。 これらは、t@N または l@N という形式を取ります。

  ハンドラ ID
イベントハンドラは、整数番号 hid によって認識されます ( status 、 delete または handler コマンドを参照)。

コマンド
すべての dbx コマンドをリストするには、 dbx コマンド行で help コマンドを入力します。

環境
dbx は、環境変数 EDITOR を検査して、 edit コマンドで使用するエディタを決定します。 環境変数 TMPDIR (設定されている場合) に指定されているディレクトリは、 dbx で必要な一時ファイルの位置として /tmp の代わりに使用されます。 ksh 環境の変数もいくつか使用されます。

ファイル
.dbxrc
    ローカルの dbx 初期化ファイル
~/.dbxrc
    ユーザー独自の dbx 初期化ファイル
libcollector.so
    collector コマンドで使用される共有ライブラリ
libdbx_agent.so
    Java のデバッグに使用される共有ライブラリ
librtc.so
    RTC ( check コマンド) 用に使用される共有ライブラリ
libdbxadb.so
    adb コマンドで使用される共有ライブラリ
libdbxFintr.so
    Fortan 組み込み関数呼び出し用に使用される共有ライブラリ
debugging.so
    dbx の開発者向け。 dbx の問題を診断するときに役に立つライブラリ

関連項目
bcheck(1)、 csh(1)、 dbxrc(4)、 dbxinit(4)、 workshop(1)、 kill(1)、 ksh(1)、 make(1S)、 rtc_patch_area(1)