dbx コマンドによるデバッグ

デバッグセッションを開始する

dbx セッションを開始する最も簡単な方法は、dbx コマンドをシェルプロンプトで入力する方法です。

シェルから dbx を起動するには、次のように入力します。


$ dbx

シェルから dbx を起動し、デバッグするプログラムを読み込むには、次のように入力します。


$ dbx program_name

dbx 起動シーケンス

呼び出し時に、dbx は、ディレクトリ install-directory/lib にある インストール初期化ファイル dbxrc を探して読み取ります。

次に、dbx は、カレントディレクトリ内、さらに $HOME 内の初期化ファイル .dbxrc を検索します。このファイルが見つからないと、カレントディレクトリ、さらに $HOME 内の初期化ファイル .dbxinit を検索します。通常、.dbxrc.dbxinit ファイルの内容は、1 つの例外を除けば同じです。.dbxinit ファイルにおいて、alias コマンドは、通常のデフォルト値である kalias ではなく dalias と定義されています。-s コマンド行オプションを使用すると、異なる初期化ファイルを明示的に指定することができます。

初期化ファイルは、どのような dbx コマンドでも含むことができます。一般には、aliasdbxenvpathmap、および Korn シェル機能定義が含まれます。ただし、プログラムが読み込まれているか、またはプロセスが接続されていなければならないコマンドがいくつかあります。初期化ファイルはすべて、プログラムまたはプロセスが読み込まれる以前に読み込まれています。初期化ファイルは、source コマンドまたは . (ピリオド) コマンドを使用してほかのファイルをソースにすることもできます。初期化ファイルは、ほかの dbx オプションを設定するためにも使用されます。

dbx がプログラム情報を読み込む際、「...のシンボル情報を読んでいます」などの一連のメッセージが表示されます。

プログラムの読み込みが終了すると、dbx は準備完了状態になり、プログラムの「メイン」ブロックを表示します (C、C++、または Fortran 90 の場合は main()、FORTRAN 77 の場合は MAIN())。通常は、ブレークポイント (C プログラムであれば stop in main ) を設定してから実行コマンド (run) を発行する必要があります。


注 -

デフォルトにより、-xs でコンパイルされたモジュールのデバッグ情報は、.o ファイルに保存されたデバッグ情報と同様に遅延して読み込まれます。dbx の環境変数 delay_xs を使用すると、この読み込み遅延機能をオフにして、デバッグ情報を dbx の起動時に読み込むことができます。「.o ファイルが存在しない場合のデバッグ」を参照してください。


コアファイルが存在する場合

core という名前のファイルが dbx を起動するディレクトリに存在する場合、このファイルはデフォルトでは読み取られません。コアファイルは明示的に指定する必要があります。プログラムがコアをダンプしたときにどこで実行されていたかを確認するには、where コマンドを使用してください。

コアファイルをデバッグするには、次のように入力します。


$ dbx program_name core

コアファイルをデバッグする場合は、変数と式を評価して、プログラムがクラッシュした時点でのその値を確認することもできますが、関数呼び出しを行った式を評価することはできません。

プロセス ID

動作中のプロセスを dbx に接続できます。dbx コマンドに引数としてプロセス ID (pid) を指定します。


$ dbx your_program_name pid

プログラムの名前を知らなくても、その ID 番号を使用してプロセスに接続できます。


$ dbx - pid

この場合、dbx はプログラムの名前を認識できないため、run のようなコマンドの中でそのプロセスに引数を渡すことはできません。