dbx コマンド

目的

プログラムをデバッグして実行する環境を提供します。

構文

dbx [-a ProcessID] [-B DebugFile] [-c CommandFile] [-I Directory] [-E DebugEnvironment] [-p oldpath=newpath:...| pathfile] [-u] [-F] [-L ] [-r] [-x] [-v] [-C CoreFile | ObjectFile [CoreFile] ]

説明

dbx コマンドは、C、C++、および Fortran の各プログラム用のシンボリック・デバッグ・プログラムを提供します。これにより、以下の操作が可能です。

  • オブジェクト・ファイルとコア・ファイルの検査
  • プログラム実行のための制御された環境の提供
  • 選択したステートメントにブレークポイントを設定、 または一度に 1 行ずつプログラムを実行
  • 記号変数を使ったデバッグ、および記号変数の正しい形式の表示

ObjectFile パラメーターは、コンパイラーが生成するオブジェクト (実行可能) ファイルです。 プログラムのコンパイル時に dbx コマンドに必要な情報を生成するには、-g (記号テーブル生成) フラグを使用します。

注: オブジェクト・ファイルをコンパイルするときは、cc コマンドの -g フラグを使用してください。-g フラグを使わない場合、 または strip コマンドにより xcoff ファイルから記号参照が除去される場合、 dbx コマンドの記号機能が制限されます。 また、dbx によるデバッグを計画している実行可能プログラムの最適化には、-O コンパイラー・オプションを使用しないでください。 最適化では、コードが再編成され、dbx コマンドによる実行可能プログラムのデバッグの値をさらに制限することにより、デバッグ・データを小さくします。

-c フラグを指定しないと、dbx コマンドはユーザーの $HOME ディレクトリー内に .dbxinit ファイルがないか調べます。それから、ユーザーの現行ディレクトリー内に .dbxinit ファイルがないか調べます。 .dbxinit ファイルが現行ディレクトリー内にある場合は、 そのファイルがユーザーの $HOME ディレクトリー内の .dbxinit ファイルを指定変更します。 .dbxinit ファイルがユーザーの $HOME ディレクトリーまたは現行ディレクトリー内にある場合は、 そのファイルのサブコマンドがデバッグ・セッションの開始時に実行されます。 .dbxinit ファイルを作成するにはエディターを使用してください。

ObjectFile を指定しないと、 dbx は検査するオブジェクト・ファイルの名前を探します。デフォルトの設定は a.out です。 core ファイルが現行ディレクトリー内に存在する場合、または CoreFile パラメーターが指定されている場合には、 dbx はプログラムに障害が発生した位置を報告します。ObjectFile の実行が始まるまでは、 コア・イメージ内に保持されている変数、レジスター、およびメモリーを調べることができます。プログラムの実行が始まると、 dbx デバッグ・プログラムはコマンドの入力を促すプロンプトを表示します。

-B フラグを使用すると、始動に関するデバッグ情報を含む代替オブジェクト・ファイルまたは個別の .stab ファイルを指定できます。代替オブジェクト・ファイルは、プロセスに付加している場合にのみ指定可能です。このデバッグ情報は、実行中のプロセスのディスク・コピーからではなく、この代替オブジェクト・ファイルまたは .stab デバッグ・ファイルから読み取られます。この代替オブジェクト・ファイルは、元のオブジェクト・ファイルのストリップされていないコピーでなければなりません。それ以外の場合、これは無視されます。-B フラグは、デバッグ・セクションのサイズが大きい場合に使用してください。実行中はオブジェクト・ファイルのストリップされているコピーを使用し、デバッグ中はストリップされていないコピーを使用します。.stab デバッグ・ファイルは、–bstabsplit リンカー・オプションを使用して生成されます。-B フラグを stabsplit 実行可能ファイルに指定しないと、dbx コマンドにより実行可能ファイルのディレクトリーから対応する .stab ファイルの取得が試行されます。

式の処理

dbx プログラムは広範囲の式を表示できます。C 構文と Fortran の一部の拡張機能を使用して、dbx デバッグ・プログラム内の式を指定できます。

次の演算子をデバッグ・プログラムで使用することができます。

項目 説明
* (アスタリスク) または ^ (脱字記号) 間接またはポインターの参照解除を示します。
[ ] (大括弧) または ( ) (小括弧) 添え字配列式を示します。
. (ピリオド) このフィールド参照演算子はポインターおよび構造と一緒に使用します。 この演算子により C 演算子 -> (矢印) が不要になります (使用してもかまいません)。
& (アンパーサンド) 変数のアドレスを取得します。
.. (ピリオド 2 個) 配列の範囲を指定するとき、上限と下限を区切ります。例えば、n[1..4] のように指定します。

次のタイプの演算子をデバッグ・プログラム内の式に使用できます。

項目 説明
代数演算 =-*/ (浮動除算)、div (整数除算)、modexp (指数)
ビット単位演算 -Ibitandxor~. <<>>
論理演算 orandnotII&&
比較式 <><=>=< > または !== または ==
その他 (typename),sizeof

論理式と比較式は、stop、 および trace での条件として使用可能です。

式のタイプが検査されます。式のタイプは、名前の変更またはキャスト演算子で指定変更できます。 タイプの名前変更のフォーマットは、Typename (Expression)Expression |Typename、および (Typename) Expression の 3 種類です。 次の例は、x 変数が値 97 の整数である場合を示しています。

(dbx) print x
97
(dbx) print char (x), x ¥ char, (char) x, x
'a' 'a' 'a' 97

コマンド・ラインの編集

dbx コマンドには、Korn シェルの機能に似たコマンド・ライン編集機能があります。vi モードには vi-like 編集機能がありますが、 emacs モードには emacs と同じ制御があります。

これらの機能は、dbx サブコマンドの、 set -o、 または set edit を使用するとオンにできます。 vi-style コマンド・ライン編集をオンにするには、サブコマンド set edit vi または set -o vi をタイプします。

EDITOR 環境変数を使用しても、編集モードを設定することができます。

dbx コマンドは、コマンド・ラインから入力されたコマンドのヒストリーを .dbxhist ヒストリー・ファイルに保管します。DBXHISTFILE 環境変数が設定されていない場合は、$HOME/.dbxhist ヒストリー・ファイルが使用されます。

デフォルトでは、dbx は、入力された最後の 128 コマンドのテキストを保管します。 DBXHISTSIZE 環境変数を使用して、この制限を増やすことができます。

フラグ

項目 説明
-a ProcessID 実行中のプロセスにデバッグ・プログラムを接続します。 デバッグ・プログラムを接続するには、このプロセスにシグナルを送信する権限が必要です。 プロセス ID を決定するには、 ps コマンドの使用権限が必要です。アクセス権を持っている場合、dbx プログラムは ptrace システム・コールを使用してプロセスを中断し、プロセスに SIGTRAP シグナルを送信します。プロセスは SIGTRAP シグナルを無視することができません。 次にプログラムはオブジェクト・ファイルの絶対パス名を判別してシンボリック情報を読み取り、コマンドを要求するプロンプトを出します。
-BDebugFile このフラグにより、始動時の代替デバッグ・ファイルを指定できます。
-c CommandFile 標準入力から読み取る前に、ファイル内の dbx サブコマンドを実行します。$HOME ディレクトリー内の指定ファイルが最初に処理されます。 次に現行ディレクトリー内の指定ファイルが処理されます。現行ディレクトリー内のコマンド・ファイルは、 $HOME ディレクトリー内のコマンド・ファイルを指定変更します。指定ファイルが $HOME ディレクトリーにも現行ディレクトリーにも存在しなければ、 警告メッセージが表示されます。dbx プログラムを始動すると、 source サブコマンドが使用できます。
-C CoreFile オブジェクト・ファイルを指定しないでコア・ファイルを分析します。この場合、dbx コマンドはコア・ファイルに示されたオブジェクト・ファイルを使用します (そのファイルが現行ディレクトリーにあり、コア・ファイルと一致する場合)。それ以外の場合は、オブジェクト・ファイルを使用しないで進行します。このフラグは、-r フラグまたは -a フラグの後に使用すると無視されます。
-E DebugEnvironment デバッグ・プログラムのための環境変数を指定します。
-p oldpath=newpath:...| pathfile core ファイルを検査するとき、またはプロセスに付加するときのライブラリー・パスの置換を、oldpath=newpath のフォーマットで指定します。 oldpath 変数には、置換される値 (core ファイルまたはプロセスの付加時の Loader Section に格納されたとおり) を指定します。newpath 変数には、置換する値を指定します。oldpath 変数と newpath 変数には、完全パス、部分パス、相対パス、または絶対パスを指定できます。複数の置換値はコロンで区切ります。または、-p フラグでは、以前に記述されたフォーマットでのマッピングを読み取るファイル名 を指定することもできます。 ファイルからマッピングを読み取る場合は、1 行につき 1 マッピングのみ 許可されます。プロセスに付加している場合に -p フラグを使用すると、デバッグ情報は置換されたパス・ファイルから読み取られます。パス・ファイルは、ライブラリーの実行中のコピーと一致しなければなりません。
-F このフラグを使用すると、遅延読み取りモードがオフになり、dbx コマンドは起動時にすべての記号を読み取ります。 デフォルトでは、遅延読み取りモードはオンなので、このコマンドは、 dbx セッション開始時に必要な記号テーブル情報だけを読み取ります。 このモードでは、dbx は記号情報が読み取られていないローカル変数とタイプを読み取りません。 したがって、whereis i などのコマンドを使用した場合に、 すべての関数内のローカル変数 i のすべてのインスタンスが表示されるとは限りません。
-L リンケージ・シンボルを保持します。
-I Directory (大文字の i) ソース・ファイルを検索するディレクトリーのリストに、 Directory 変数で指定されるディレクトリーを含みます。デフォルトは、 次のディレクトリー内でソース・ファイルを検索することです。
  • コンパイル時にソース・ファイルが入っていたディレクトリー。このディレクトリーは、 コンパイラーがソース・パスをオブジェクト内に配置した場合にのみ検索されます。
  • 現行ディレクトリー。
  • プログラムが現在入っているディレクトリー。
-r 即時にオブジェクト・ファイルを実行します。オブジェクト・ファイルが正常終了すると、 dbx デバッグ・プログラムは終了します。正常終了でない場合、 デバッグ・プログラムに入り、終了理由を報告します。
注: -r が指定されていないと、dbx コマンドはプロンプトを表示し、 コマンドの入力を待機します。
-u ファイル名記号の先頭に @ (アットマーク) を付けるように、dbx コマンドに指示します。このフラグを使うと、 未確定のシンボル名が少なくなります。
-v dbx コマンドがコア・ファイルの妥当性検査を省略します。このフラグを使用すると、一部のセクションが無効な場合でも、コア・ファイルの有効なセクションを分析できます。
-x Fortran ソース・コードで生じる記号から、dbx コマンドが _ (末尾の下線) を除去しないようにします。 このフラグにより、dbx は、 xxxxxx_ のように、 下線文字以外は同じであるシンボルを区別できるようになります。

  1. 次の例では、 プロセスと同時に dbx デバッグ・プログラムを始動する方法について説明します。例で使っているのは、samp.c というプログラムです。 まず、この C プログラムを下記のように -g オプションを使ってコンパイルし、 記号テーブル参照を含むオブジェクト・ファイルを作成します。このオブジェクト・プログラムの名前は samp です。
    $ cc -g samp.c -o samp
    プログラム samp を実行すると、オペレーティング・システムはバス・エラーが発生したことを報告し、 次のように現在の作業ディレクトリーにコア・イメージを書き込みます。
    $ samp
    Bus Error - core dumped
    エラーが発生した場所を判別するには、次のように入力します。
    $ dbx samp
    システムは次のメッセージを出力します。
    dbx version 3.1
    Type 'help' for help.
    reading symbolic information . . . [
    using memory image in core]
      25   x[i] = 0;
    (dbx) quit
  2. この例では、dbx をプロセスに接続する方法を示しています。この例のプログラム名は、looper.c です。
    main()
    {
          int i,x[10];
           
          for (i = 0; i < 10;);
    }
    上記のプログラムは、i がまったく増分されないため、 終了しません。looper.c-g フラグを指定して コンパイルし、シンボリック・デバッグ機能を獲得します。
    $ cc -g looper.c -o looper
    コマンド・ラインから looper を実行し、 実行中に dbx をプログラムに接続するために次のステップを実行します :
    1. dbxlooper に接続するには、 プロセス ID を決定しなければなりません。looper をバックグラウンド・プロセスとして 実行しなかった場合は、X Window を別にオープンしなければなりません。 この X Window から、次のように入力します。
      ps -u UserID
      ここでは、UserID はユーザーのログイン ID です。そのユーザーに属するアクティブ・プロセスがすべて次のように表示されます。
      PID     TTY      TIME    COMMAND
      68      console   0:04    sh
      467     lft3     10:48    looper

      この例では、looper のプロセス ID は 467 です。

    2. dbxlooper に接続するには、 次のように入力します。
      $ dbx -a 467

      システムは次のメッセージを出力します。

      Waiting to attach to process 467 . . .
      Successfully attached to /tmp/looper.
      dbx is initializing
      Type 'help' for help.
      reading symbolic information . . .
       
      attached in main at line 5
      5     for (i = 0; i < 10;);
      (dbx)

      これで、プロセスが dbx で開始されたものとして、 プロセスを照会およびデバッグすることができます。

  3. 実行可能ファイル objfile のソース・ファイルを検索するためのディレクトリーのリストにディレクトリーを追加するには、次のように入力します。
    $dbx -I /home/user/src -I /home/group/src 
    objfile

    dbx が始動されると、 use サブコマンドを使用して、 上記の処理を実行できます。use コマンドはディレクトリー・リストを再設定しますが、-I フラグはディレクトリー・リストにディレクトリーを追加します。

  4. -r フラグを使うには、次のように入力します。
    $ dbx -r samp 
    システムは次のメッセージを出力します。
    Entering debug program . . .
    dbx version 3.1
    Type 'help' for help.
    reading symbolic information . . .
    bus error in main at line 25
      25   x[i] = 0;
    (dbx) quit

    -r フラグを使うと、コア・イメージをとらなくても、 ユーザーのプロセスのメモリー状態を検査することができます。

  5. デバッグ・プログラムのための環境変数を指定するには、次のように入力します。
    dbx -E LIBPATH=/home/user/lib -E LANG=Ja_JP objfile
  6. プロセスに付加している場合に代替オブジェクト・ファイルとライブラリーを指定するには、次のように入力します。
    dbx –a 467 –B debug_samp –p /usr/lib/=./dir/debug_libs/
  7. 始動時の個別のデバッグ・ファイルを指定するには、次のように入力します。
     dbx –B /usr/debug_samp.stab debug_samp

dbx サブコマンド

注: サブコマンドは、dbx デバッグ・プログラムを実行している間だけ使用できます。
項目 説明
/ 現行ソース・ファイル内で前方向にパターンを検索します。
? 現行ソース・ファイル内で逆方向にパターンを検索します。
addcmd 指定されたイベント番号に dbx サブコマンドを追加します。
alias dbx サブコマンドの別名を作成します。
assign 変数に値を代入します。
attribute すべての属性オブジェクト、または選択した属性オブジェクトに関する情報を表示します。
call 指定したプロシージャーまたは関数に関連したオブジェクト・コードを実行します。
case dbx デバッグ・プログラムが記号を解釈する方法を変更します。
catch アプリケーション・プログラムへシグナルが送信される前に、そのシグナルのトラッピングを開始します。
clear 特定のソース行にあるすべての停止を除去します。
cleari あるアドレスにあるすべてのブレークポイントを除去します。
condition すべての条件変数、または選択した条件変数に関する情報を表示します。
cont プログラムが終了するか、別のブレークポイントに行き当たるまで、 現在の停止位置からアプリケーション・プログラムの実行を継続します。
corefile コア・ファイルのハイレベル・データを表示します。
coremap 特定のアドレス・スペース領域のマッピングを表示します。
delcmd 指定されたイベント番号に関連した dbx サブコマンドを削除します。
delete 指定されたイベント番号とスレッドの tskip カウントに対応するトレースと停止を除去します。
detach アプリケーションの実行を継続し、デバッグ・プログラムを終了します。
disable 指定のイベント番号に対応するトレースと停止を使用不可にします。
display memory メモリーの内容を表示します。
down 現行関数をスタックの下方へ移動します。
dump 指定したプロシージャー内の変数の名前と値を表示します。
edit 指定したファイルでエディターを始動します。
enable 指定のイベント番号に対応するトレースと停止を使用可能にします。
fd ファイル・ディスクリプター情報を表示します。
file 現行ソース・ファイルを、指定したファイルに変更します。
frame 現行関数を指定されたスタック・フレーム番号に対応する関数に変更します。
func 現行関数を指定したプロシージャーまたは関数に変更します。
goto 指定したソース行を次に実行する行にします。
gotoi プログラム・カウンター・アドレスを変更します。
handler pthread atfork または取り消しクリーンアップ・ハンドラーについての情報を表示します。
help dbx サブコマンドまたはトピックのヘルプ情報を表示します。
ignore アプリケーション・プログラムへシグナルが送信される前に、そのシグナルのトラッピングを停止します。
kthread カーネル・スレッドについての情報を表示します。
limitbp ブレークポイントを実行できる回数を制限します。
list 現行ソース・ファイルのリストを表示します。
listi アプリケーション・プログラムの命令をリストします。
malloc malloc サブシステムのプログラムの使用について情報を表示します。
map アプリケーションのロード特性に関する情報を表示します。
move 次の表示行を変更します。
multproc マルチプロセスのデバッグ機能を使用可能または使用不可にします。
mutex すべての mutex、または選択された mutex に関する情報を表示します。
next アプリケーション・プログラムを次のソース行まで実行します。
nexti アプリケーション・プログラムを次のマシン・インストラクションまで実行します。
onceblock once block についての情報を表示します。
plugin プラグイン・サブコマンドの起動、または使用可能プラグインの名前の表示を行います。
pluginload プラグインをロードします。
pluginunload プラグインをアンロードします。
print 式の値を表示するかプロシージャーを実行して、そのプロシージャーの戻りコードを表示します。
printbp ブレークポイントを実行する回数を印刷します。
proc プロセスについての情報を表示します。
prompt dbx コマンド・プロンプトを変更します。
quit dbx デバッグ・プログラムを停止します。
registers すべての汎用レジスター、システム制御レジスター、浮動小数点レジスター、 および現行命令レジスターの値を表示します。
rerun 以前使用した引数でアプリケーションの実行を開始します。
resource pthread によって所有されるか、または待機されているリソースについての情報を表示します。
return 指定したプロシージャーの復帰に戻るまで、アプリケーション・プログラムの実行を継続します。
rwlock rwlocks に関する情報を表示します。
run アプリケーションの実行を開始します。
screen dbx コマンドによる対話のため X Window をオープンします。
set dbx デバッグ・プログラムの変数値を定義します。
sh シェルにコマンドを渡して実行させます。
skip アプリケーション・プログラムの実行を現在の停止位置から継続します。
source ファイルから dbx サブコマンドを読み取ります。
status ブレークポイントの詳細を印刷します。また、アクティブ・トレース、stop サブコマンド、および残りのスレッドの tskip カウントを表示します。
step ソース行を 1 行実行します。
stepi マシン・インストラクションを 1 行実行します。
stophwp ハードウェアの監視ポイントの停止を設定します。
stop アプリケーション・プログラムの実行を停止します。
stopi 指定した位置に停止を設定します。
thdata スレッド固有のデータを表示します。
thread スレッドを表示して制御します。
tls TLS 初期化テンプレート情報を表示します。
tm_status $texasr 変数に格納される値を表示および解釈します。
tnext スレッドを次のソース行まで実行します。
tnexti スレッドを次のマシン・インストラクションまで実行します。
trace トレース情報を表示します。
tracehwp ハードウェアの監視ポイントのトレースを設定します。
tracei トレース機能をオンにします。
tskip スレッドのブレークポイントをスキップします。
tstep 1 ソース行のスレッドを実行します。
tstepi 1 マシン・インストラクションのスレッドを実行します。
tstop スレッドのソース・レベル・ブレークポイント停止を設定します。
tstophwp スレッド・レベルのハードウェア監視ポイントの停止を設定します。
tstopi スレッドのインストラクション・レベル・ブレークポイントの停止を設定します。
ttrace スレッドのソース・レベル・トレースを設定します。
ttracehwp スレッド・レベルのハードウェア監視ポイントのトレースを設定します。
ttracei スレッドのインストラクション・レベル・トレースを設定します。
unalias 別名を除去します。
unset 変数を削除します。
up 現行の関数をスタックの上方へ移動します。
use ソース・ファイルの検索時に、検索されるディレクトリーのリストを設定します。
whatis アプリケーション・プログラムのコンポーネントの宣言を表示します。
where アクティブなプロシージャーと関数のリストを表示します。
whereis 指定した ID に名前が一致するすべての記号の完全修飾を表示します。
which 指定された ID の完全修飾を表示します。

/ サブコマンド

/ [ RegularExpression [ / ] ]

/ サブコマンドは、現行ソース・ファイル内で前方向に検索を行って、 RegularExpression パラメーターにより指定されたパターンを探します。 引数を付けずに / サブコマンドを 入力すると、dbx は以前に指定した正規表現を探して前方向に検索します。 検索はファイルの終わりで先頭に折り返します。

  1. 現行ソース・ファイル内で数値 12 を前方向に検索するには、 次のように入力します。
    / 12
  2. 直前の検索を繰り返すには、次のように入力します。
    /

? (検索) サブコマンドと、 regcmp サブルーチンを参照してください。

? サブコマンド

? [ RegularExpression [ ? ] ]

? サブコマンドは、現行ソース・ファイル内で逆方向に検索を行って、 RegularExpression パラメーターにより指定されたパターンを探します。 引数を付けずに ?引数を無指定でサブコマンドを入力すると、 dbx コマンドは逆方向に検索を行って、以前指定した正規表現を探します。検索はファイルの終わりで先頭に折り返します。

  1. 現行ソース・ファイル内で、 文字 z を逆方向に検索するには、次のように入力します。
    ?z
  2. 直前の検索を繰り返すには、次のように入力します。
    ?

/ (検索) サブコマンドと、 regcmp サブルーチンを参照してください。

addcmd サブコマンド

addcmd { Number... | all } "commands_string"

addcmd サブコマンドは、指定されたイベントに dbx サブコマンドを追加します。この指定されたイベントは、そのイベントに対応するブレークポイント、トレース・ポイント、または監視ポイントが実行されるたびに実行されます。dbx サブコマンドは "commands_string" パラメーターで指定できます。このパラメーターはセミコロン (;) で区切られた dbx サブコマンドのグループです。 dbx を追加するイベントは、Number パラメーターで指定できます。また、all フラグを使用して、すべてのイベントに dbx サブコマンドを追加することもできます。

フラグ

項目 説明
all すべてのイベントに dbx サブコマンドを追加します。

  1. イベント番号 1 に where サブコマンドを追加するには、次のように入力します。
    addcmd 1 "where"
  2. イベント番号 2 に registers サブコマンドを追加するには、次のように入力します。
    addcmd 2 "registers"
  3. イベント番号 3 に where サブコマンドと registers サブコマンドを追加するには、次のように入力します。
    addcmd 3 "where;registers"

clear サブコマンド、delcmd サブコマンド、delete サブコマンド、disable サブコマンド、enable サブコマンド、 stop サブコマンド、status サブコマンド、および trace サブコマンドを参照してください。 また、「 プログラミングの一般概念: プログラムの作成およびデバッグ」の『ブレークポイントの設定および削除』のセクションも参照してください。

alias サブコマンド

alias [ Name [ [ (Arglist) ] String | Subcommand ] ]

alias サブコマンドは、dbx サブコマンドの別名を 作成します。Name パラメーターは、 作成される別名です。String パラメーターは、 このサブコマンドを実行した後で Name で参照できる一連の dbx サブコマンドです。パラメーターを付けずに alias サブコマンドを使用すると、 現行の別名がすべて表示されます。

  1. rr を、rerun の別名にするには、次のように入力します。
    alias rr rerun
  2. コマンド・ラインに printandstep と入力したときに、 print nstep の、 2 つのサブコマンドを実行させるには、次のように入力します。
    alias printandstep "print n; step"
  3. alias サブコマンドを、 限定マクロ機能として使用することもできます。次に例を示します。
    (dbx) alias px(n) "set $hexints; print n; unset $hexints"
    (dbx) alias a(x,y) "print symname[x]->symvalue._n_n.name.Id[y]"
    (dbx) px(126)
    0x7e

    この例では、別名 px は 16 進法で値を表示していますが、 デバッグ環境への影響が永続することはありません。

assign サブコマンド

assign Variable=Expression

assign サブコマンドは、 Expression パラメーターで指定された値を Variable パラメーターで指定された変数に代入します。

  1. 変数 x に値 5 を代入するには、 次のように入力します。
    assign x = 5
  2. 変数 x に変数 y の値を代入するには、 次のように入力します。
    assign x =  y
  3. 変数 z に文字値「z」を代入するには、 次のように入力します。
    assign  z  =  'z'
  4. 論理タイプ変数 B にブール値 false を代入するには、 次のように入力します。
    assign  B  =  false
  5. 文字ポインター Y に、 「Hello World」という文字列を代入するには、 次のように入力します。
    assign  Y  =  "Hello  World"
  6. 型チェックを使用不可にするには、 次のように入力して、dbx デバッグ・プログラム変数 $unsafeassign を設定します。
    set $unsafeassign

変数の表示および変更」のセクションを参照してください。

attribute サブコマンド

attribute [ AttributeNumber ... ]

attribute サブコマンドは、AttributeNumber パラメーターにより 定義されたユーザー・スレッド、mutex、または条件属性オブジェクトに関する情報を表示します。 パラメーターを指定しないと、すべての属性オブジェクトが表示されます。

リストされる属性オブジェクトごとに、以下の情報が表示されます。

項目 説明
attr 属性オブジェクトのシンボル名を $aAttributeNumber フォーマットで示します。
obj_addr 属性オブジェクトのアドレスを示します。
type 属性オブジェクトのタイプを示します。この値には thrmutex、または cond があり、それぞれユーザー・スレッド、mutex、および条件変数を表します。
state 属性オブジェクトの状態を示します。この値は valid または inval のいずれかです。
stack スレッド属性オブジェクトのスタック・サイズ属性を示します。
scope スレッド属性オブジェクトの有効範囲属性を示します。この値は、スレッドの競合有効範囲を決定し、リソース処理のために競合するスレッドのセットを定義します。 値は、 システムまたはプロセスの競合有効範囲を表す sys または pro です。
prio スレッド属性オブジェクトの優先順位属性を示します。
sched スレッド属性オブジェクトの schedpolicy 属性を示します。 この属性はスケジュール・ポリシーを制御します。 値は fiforr (ラウンドロビン)、 または other です。
p-shar mutex または条件属性オブジェクトのプロセス共用属性を示します。mutex または条件は、 別のプロセスに属するスレッドがアクセスできる場合は、プロセス共用となります。値は、 yes または no です。
protocol mutex のプロトコル属性を示します。この属性は、 スレッドの優先順位に基づいて mutex を保持する効果を決定します。値は no_prioprioprotect のいずれかです。
clock 条件属性オブジェクトのクロック属性を示します。 この属性は、条件変数を待機しているスレッド がタイムアウトを指定されているとき、どのクロックを使用する必要があるかを判別します。 値は realtime または monotonic とすることができます。
注:
  1. dbx デバッグ・プログラムの print サブコマンドは、シンボルによる属性名を認識し、 対応するオブジェクトの状況を表示するために使用できます。
  2. 使用可能な属性は、実装される POSIX オプションに応じて異なります。

  1. すべての属性に関する情報を表示するには、次のように入力します。
    attribute
    出力は以下のようになります。
    attr   obj_addr   type  state  stack   scope    prio 
    sched p-shar
    $a1   0x200035c8  mutex valid                                no 
    $a2   0x20003628  cond  valid                                no
    $a3   0x200037c8  thr   valid  57344    sys      126 other
    $a4   0x200050f8  thr   valid  57344    pro      126 other
      
  2. 属性 1 と 3 に関する情報を表示するには、次のように入力します。
    attribute 1 3
     
    出力は以下のようになります。
    attr   obj_addr   type  state  stack   scope    prio 
    sched p-shar
    $a1   0x200035c8  mutex valid                                no 
    $a3   0x200037c8  thr   valid  57344    sys      126 other
      

dbx コマンドの、 condition サブコマンド、 mutex サブコマンド、 print サブコマンド、 および thread サブコマンドを参照してください。

また、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『スレッドの作成』、 『mutex の使用』、 および『条件変数の使用』のセクションも参照してください。

call サブコマンド

call Procedure ( [ Parameters ] )

call サブコマンドは、Procedure パラメーターで指定されたプロシージャーを実行します。 戻りコードは表示されません。パラメーターを指定すると、 それらのパラメーターは実行中のプロシージャーに渡されます。

注: ベクトル・パラメーターを使用する機能を呼び出すのに、 call サブコマンドは使用できません。

dbx コマンドの実行中にコマンドを呼び出すには、 次のように入力します。

(dbx) call printf("hello")
hello

printf は正常に処理を終了します。

case サブコマンド

case [ default | mixed | lower | upper ]

case サブコマンドは、dbx デバッグ・プログラムが記号を解釈する方法を変更します。 デフォルトの記号処理は、現行の言語に基づいています。現行の言語が C、C++、または未定義であれば、記号は大文字に変換されません。現行の言語が Fortran であれば、記号は小文字に変換されます。このサブコマンドは、現行の言語と整合しない方法で記号を解釈する必要がある場合に使用します。

パラメーターを付けずに case サブコマンドを入力すると、 現在のケース・モードが表示されます。

フラグ

項目 説明
default 現行の言語により異なります。
mixed 記号の解釈を、それらが実際に表示されるとおりに行います。
lower 記号を小文字として解釈させます。
upper 記号を大文字として解釈させます。

  1. 現在のケース・モードを表示するには、次のように入力します。
    case
  2. dbx に対して、 シンボルを実際の表示どおりに解釈するように命令するには、次のように入力します。
    case mixed
  3. dbx に対して、 シンボルを大文字として解釈するように命令するには、次のように入力します。
    case upper

小文字から大文字への変数の変換」のセクションを参照してください。

catch サブコマンド

catch [ SignalNumber | SignalName ]

catch サブコマンドは、シグナルがアプリケーション・プログラムへ送信される前に、 指定したシグナルのトラッピングを開始します。このサブコマンドは、 デバッグ中のアプリケーション・プログラムが割り込みなどのシグナルを処理する場合に有効です。 トラップされるシグナルは、SignalNumber パラメーターまたは SignalName パラメーターを使用して、番号または名前で指定できます。 シグナル名は大/小文字の区別がなく、SIG プレフィックスはオプションです。 SignalNumber パラメーターおよび SignalName パラメーターを指定しない場合は、デフォルトとして、SIGHUPSIGCLDSIGALARMSIGKILL の各シグナルを除くすべてのシグナルがトラップされます。 引数を指定していない場合は、トラップされるシグナルの現行リストが表示されます。

  1. dbx コマンドがキャッチするシグナルの、 現在のリストを表示するには、次のように入力します。
    catch
  2. シグナル SIGALARM をトラップするには、 次のように入力します。
    catch SIGALARM

ignore サブコマンド、 およびシグナルの処理を参照してください。

clear サブコマンド

clear SourceLine

clear サブコマンドは、特定のソース行にあるすべての停止を除去します。SourceLine パラメーターは、以下の 2 つのフォーマットで指定できます。

  • 整数として
  • 後ろに : (コロン) と整数が続くファイル名文字列として

19 に設定されたブレークポイントを除去するには、 次のように入力します。

clear 19

cleari サブコマンドと、 delete サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ『ブレークポイントの設定および削除』のセクションも参照してください。

cleari サブコマンド

cleari Address

cleari サブコマンドは、 Address パラメーターで指定されたアドレスにあるすべてのブレークポイントをクリアします。

  1. アドレス 0x100001b4 に設定されたブレークポイントを除去するには、 次のように入力します。
    cleari 0x100001b4
  2. main() プロシージャー・アドレスに設定されたブレークポイントを除去するには、 次のように入力します。
    cleari &main

clear サブコマンドのセクション、 delete サブコマンドのセクション、 および『ブレークポイントの設定および削除』のセクション ( プログラミングの一般概念: プログラムの作成およびデバッグ) を参照してください。

condition サブコマンド

condition [ wait | nowait | ConditionNumber ... ]

condition サブコマンドは、1 つ以上の条件変数に関する情報を表示します。 1 つ以上の ConditionNumber パラメーターを指定すると、 condition サブコマンドは指定した条件変数に関する情報を表示します。 フラグまたはパラメーターを指定しないと、condition サブコマンドはすべての条件変数を表示します。

各条件について表示される情報は、以下のとおりです。

項目 説明
cv 条件変数のシンボル名を $cConditionNumber フォーマットで示します。
obj_addr 条件変数のメモリー・アドレスを示します。
clock 条件変数のクロック属性を示します。
num_wait 条件変数を待機しているスレッドの数を示します。
waiters 条件変数を待機しているユーザー・スレッドの数を示します。

注: dbx デバッグ・プログラムの print サブコマンドは、 記号条件変数名を認識するので、対応するオブジェクトの状況を表示するために使用できます。

フラグ

項目 説明
wait 待機中のスレッドのある条件変数を表示します。
nowait 待機中のスレッドのない条件変数を表示します。

  1. すべての条件変数に関する情報を表示するには、次のように入力します。
    condition
  2. 待機中のスレッドがあるすべての条件変数に関する情報を表示するには、 次のように入力します。
    condition  wait
  3. 条件変数 3 に関する情報を表示するには、次のように入力します。
    condition 3
    出力は以下のようになります。
    cv      obj_addr     num_wait  waiters
    $c3     0x20003290         0

attribute サブコマンド、 mutex サブコマンド、 print サブコマンド、 および thread サブコマンドを参照してください。

また、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『条件変数の使用』も参照してください。

cont サブコマンド

cont [ SignalNumber | SignalName ]

cont サブコマンドは、現在の停止位置からアプリケーション・プログラムの実行を継続し、 プログラムが終了するか、別のブレークポイントに行き当たるまで、続けます。 シグナルが SignalNumber パラメーターに指定した番号か、 SignalName パラメーターで指定した名前によって指定されている場合は、 プログラムはそのシグナルを受信したものとして継続されます。 シグナル名は、大文字、小文字を区別せず、SIG プレフィックスはオプションです。 シグナルが指定されていないと、プログラムは停止されなかったものとして継続されます。

  1. プログラムの実行を現在の停止位置から継続するには、次のように入力します。
    cont
  2. シグナル SIGQUIT を受信したとしてプログラムの実行を継続するには、次のように入力します。
    cont SIGQUIT

dbx コマンドの detach サブコマンド、 dbx コマンドの goto サブコマンド、 dbx コマンドの next サブコマンド、 dbx コマンドの skip サブコマンド、 dbx コマンドの step サブコマンドを参照してください。

corefile サブコマンド

corefile サブコマンドは、コア・ファイルについて、実行可能ファイル名、コア・ファイル・フォーマットのバージョン情報、使用可能データを示すフラグ、クラッシュの原因となったシグナル、およびコアをダンプしたプロセスの実行モードなど、そのヘッダーの情報を表示します。

coremap サブコマンド

coremap [ stack | data | sdata | mmap | shm | loader ]

coremap サブコマンドは、特定のアドレス・スペース領域のマッピングを表示します。領域名を指定しないと、coremap サブコマンドは使用可能なマッピングをすべて表示します。

  1. 共用メモリー領域のマッピングを表示するには、次のように入力します。
    coremap shm
  2. メモリー・マップ済み領域のマッピングを表示するには、次のように入力します。
    coremap mmap
  3. ローダー・エントリーで示されたすべての領域のマッピングを表示するには、次のように入力します。
    coremap loader
  4. 使用可能なマッピングをすべて表示するには、次のように入力します。
    coremap

corefile サブコマンドを参照してください。

delcmd サブコマンド

delcmd EventNumber { Number... | all }

delcmd サブコマンドは、指定されたイベントに関連した dbx サブコマンドを除去します。 除去する dbx サブコマンドは、Number パラメーターで指定できます。また、all フラグを使用して、指定されたイベントに関連したすべての dbx サブコマンドを除去することもできます。 EventNumber パラメーターは、dbx サブコマンドを除去するイベントを指定します。

フラグ

項目 説明
all 指定されたイベントに関連したすべての dbx サブコマンドを除去します。

  1. イベント番号 2 からすべての dbx サブコマンドを除去するには、次のように入力します。
    delcmd 2 all
  2. イベント番号 3 から dbx サブコマンド番号 1 を除去するには、次のように入力します。
    delcmd 3 1
  3. イベント番号 2 から dbx サブコマンド番号 1 および 2 を除去するには、次のように入力します。
    delcmd 2 1 2

addcmd サブコマンド、clear サブコマンド、delete サブコマンド、 disable サブコマンド、enable サブコマンド、stop サブコマンド、status サブコマンド、および trace サブコマンドを参照してください。 また、「 プログラミングの一般概念: プログラムの作成およびデバッグ」の『ブレークポイントの設定および削除』のセクションも参照してください。

delete サブコマンド

delete { Number ... | all | tskip [for $tthreadnumber]}

delete サブコマンドは、アプリケーション・プログラムおよびスレッドの tskip カウントからトレースと停止を除去します。 除去するトレースおよび停止は、Number パラメーターで指定できます。また、all フラグを使用して、すべてのトレースおよび停止を除去することもできます。 dbx デバッグ・プログラムによってトレースまたは停止に関連付けられた番号を表示するときは、 status サブコマンドを使用します。

tskip サブコマンドを使用して選択に設定された残りの tskip カウントは、tskip フラグを使用して削除できます。 status サブコマンドを使用して、残ったスレッド tskip カウントを表示してください。 スレッドが指定されていない場合は、現行スレッドが使用されます。

フラグ

項目 説明
all トレースと停止をすべて除去します。
for $t threadnumber スレッド番号を指定します。

  1. アプリケーション・プログラムからすべてのトレースと停止を除去するには、次のように入力します。
    delete all
  2. イベント番号 4 のトレースと停止を除去するには、次のように入力します。
    delete 4
  3. スレッド 3 の tskip カウントを除去するには、次のように入力します。
    delete tskip for $t3
  4. 現行スレッドの tskip カウントを除去するには、次のように入力します。
    delete tskip 

clear サブコマンド、cleari サブコマンド、status サブコマンド、tskip サブコマンド、および プログラミングの一般概念: プログラムの作成およびデバッグブレークポイントの設定および削除』を参照してください。

detach サブコマンド

detach [ SignalNumber | SignalName ]

detach サブコマンドは、アプリケーション・プログラムの実行を継続し、 デバッグ・プログラムを終了します。シグナルは、以下のいずれかによって指定することができます。

  • 名前。SignalName パラメーターを使用。
  • 番号。SignalNumber パラメーターを使用。

    シグナル名は、大文字、小文字を区別せず、SIG プレフィックスはオプションです。

    シグナルが指定されていると、プログラムはそのシグナルを受信したものとして継続されます。シグナルが指定されていないと、プログラムは停止が起こらなかったものとして継続されます。

  1. アプリケーションの実行を継続し、dbx を終了するには、次のように入力します。
    detach
  2. dbx を終了し、アプリケーションがシグナル SIGREQUEST を受信したとしてアプリケーションの実行を継続するには、 次のように入力します。
    detach SIGREQUEST

dbx デバッグ・プログラムの使用』を参照してください。

disable サブコマンド

disable { Number ... all }

disable サブコマンドは、デバッグ・イベントに関連する トレースと停止を使用不可にします。 Number パラメーターを使って使用不可にするトレースと 停止を指定することも、 あるいは all フラグを使って すべてのトレースと停止を使用不可にすることもできます。 dbx デバッグ・プログラムによってトレースまたは停止に関連付けられたイベント番号を表示するときは、 status サブコマンドを使用します。

フラグ

項目 説明
all トレースと停止をすべて除去します。

  1. アプリケーション・プログラムからすべてのトレースと停止を使用不可にするには、次のように入力します。
    disable all
  2. イベント番号 4 のトレースと停止を使用不可にするには、次のように入力します。
    disable 4

詳しくは、enable subcommanddelete subcommand、および status subcommand を参照してください。

また、 プログラミングの一般概念: プログラムの作成およびデバッグ『ブレークポイントの設定および削除』も参照してください。

display memory サブコマンド

{ Address,Address/ | Address/ [ Count ] } [ Mode ] [ >File ]

display memory サブコマンドは、以下の要素で制御されるメモリーの部分を表示します。 このサブコマンドには、コマンドを始動するキーワードはありません。

表示されるメモリーの範囲は、以下のいずれかの指定により制御されます。

  • 2 つの Address パラメーター。 この場合、2 つのアドレスの間にあるすべての行が表示されます。

    または

  • 表示開始位置を示す 1 つの Address パラメーターと、 Address からの表示行数を決定する Count パラメーター。

記号アドレスを指定するには、名前の前に & (アンパーサンド) を付けます。アドレスは、他のアドレスと演算子 + (正符号)、- (負符号)、 * (間接) からなる式で作成できます。括弧で囲まれた式は、アドレスとして解釈されます。

  • メモリーの表示形式を制御するには、Mode パラメーターを 使用します。Mode パラメーターのデフォルトは現行モードです。Mode の初期値は X です。 以下のモードが使用できます。
項目 説明
b 1 バイトを 8 進で表示します。
c 1 バイトを 1 文字として表示します。
d 短ワードを 10 進で表示します。
D 長ワードを 10 進で表示します。
Df 倍精度の 10 進数浮動小数点数を表示します。
DDf 4 倍精度の 10 進数浮動小数点数を表示します。
f 単精度実数を表示します。
g 倍精度実数を表示します。
h 1 バイトを 16 進で表示します。
Hf 単精度の 10 進数浮動小数点数を表示します。
i マシン・インストラクションを表示します。
lld 8 バイトの符号付き 10 進数を表示します。
llu 8 バイトの符号なし 10 進数を表示します。
llx 8 バイトの符号なし 16 進数を表示します。
llo 8 バイトの符号なし 8 進数を表示します。
o 短ワードを 8 進で表示します。
O 長ワードを 8 進で表示します。
p アドレス/ポインターを 16 進で表示します。
q 拡張精度浮動小数点数を表示します。
s null バイトで終了する文字列を表示します。
x 短ワードを 16 進で表示します。
X 長ワードを 16 進で表示します。

フラグ

項目 説明
>File 指定したファイルに出力をリダイレクトします。

  1. アドレス 0x3fffe460 から、1 つの長ワード分の メモリーの内容を 16 進で表示するには、次のように入力します。
    0x3fffe460 / X
  2. 変数 y のアドレスから、2 バイト分の メモリーの内容を文字として表示するには、次のように入力します。
    &y / 2c
  3. Fortran 文字列 a_string の 6 番目から 8 番目までのエレメントを表示するには、次のように入力します。
    &a_string + 5, &a_string + 7/c

プログラミングの一般概念: プログラムの作成およびデバッグメモリー・アドレスの検査』を参照してください。

down サブコマンド

down [ Count ]

down サブコマンドは、 現行関数を Count レベル数だけスタックの下方へ移動します。現行関数は、名前の解決に使用します。Count パラメーターのデフォルト値は 1 です。

  1. スタックの下方に 1 レベル移動するには、次のように入力します。
    down
  2. スタックの下方に 3 レベル移動するには、次のように入力します。
    down 3

プログラミングの一般概念: プログラムの作成およびデバッグ up サブコマンド、where サブコマンド、および『スタック・トレースの表示』を参照してください。

dump サブコマンド

dump [ Procedure | "PATTERN" ] [ >File ]

dump サブコマンドは、指定されたプロシージャー内のすべての変数の名前と値、または指定されたパターンに一致する変数の名前と値を表示します。Procedure パラメーターがピリオド (.) の場合は、すべてのアクティブ変数が表示されます。 Procedure パラメーターも "PATTERN" パラメーターも指定しない場合は、現行プロシージャーが使用されます。 "PATTERN" パラメーターは、メタ文字 *?、および [] を使用したワイルドカード式です。 "PATTERN" を使用すると、グローバル・スペース内の (すべてのプロシージャーからの) 一致する記号がすべて表示されます。 >File フラグを使用すると、出力は指定したファイルにリダイレクトされます。

フラグ

項目 説明
>File 指定したファイルに出力をリダイレクトします。

  1. 現行プロシージャー内の変数の名前と値を表示するには、 次のように入力します。
    dump
  2. add_count プロシージャー内の変数の名前と値を表示するには、 次のように入力します。
    dump add_count
  3. 文字 s で始まる変数の名前と値を表示するには、次のように入力します。
    dump "s*"
  4. 現行プロシージャー内の 変数の名前と値を、var.list ファイルにリダイレクトするには、 次のように入力します。
    dump > var.list

変数の表示および変更 プログラミングの一般概念: プログラムの作成およびデバッグ」のセクションを参照してください。

edit サブコマンド

edit [ Procedure | File ]

edit サブコマンドは、指定したファイルに対してエディターを開始します。ファイルを指定するには、File パラメーターまたは Procedure パラメーターを使用します。Procedure パラメーターを使用すると、そのプロシージャーを含むファイルに対してエディターが開始します。 ファイルを指定しないと、エディターは現行のソース・ファイルに対して開始します。デフォルトは vi エディターです。 EDITOR 環境変数を必要なエディターの名前にリセットすると、このデフォルトをオーバーライドできます。

  1. 現行ソース・ファイル上でエディターを始動するには、次のように入力します。
    edit
  2. main.c ファイル上でエディターを始動するには、 次のように入力します。
    edit main.c
  3. do_count() プロシージャーが入っているファイル上のエディターを始動するには、 次のように入力します。
    edit do_count

list サブコマンド、 vi コマンド、 または vedit コマンドのセクションを参照してください。

enable サブコマンド

enable { Number ... all }

enable サブコマンドは、デバッグ・イベントに関連する トレースと停止を使用可能にします。 Number パラメーターを使って使用可能にする トレースと停止を指定することも、 あるいは all フラグを使って すべてのトレースと停止を使用可能にすることもできます。 dbx デバッグ・プログラムによってトレースまたは停止に関連付けられたイベント番号を表示するときは、 status サブコマンドを使用します。

フラグ

項目 説明
all トレースと停止をすべて除去します。

  1. アプリケーション・プログラムからすべてのトレースと停止を使用可能にするには、次のように入力します。
    enable all
  2. イベント番号 4 のトレースと停止を使用可能にするには、次のように入力します。
    enable 4

詳しくは、disable subcommanddelete subcommandstatus subcommand を参照してください。

また、 プログラミングの一般概念: プログラムの作成およびデバッグ『ブレークポイントの設定および削除』も参照してください。

fd サブコマンド

fd [ raw ] [ start [ end ] ]

fd サブコマンドは、ファイル・ディスクリプター情報を表示します。 raw オプションを使用すると、出力はロウの 16 進数フォーマットで表示されます。 その他のオプショナル引数には、start および end インデックスがあります。 インデックスが与えられないと、使用できるすべてのファイル・ディスクリプター についての情報が表示されます。1 つのインデックスを使用すると、1 つの ファイル・ディスクリプターが表示され、2 つのインデックスを使用すると その範囲に含まれるファイル・ディスクリプターが表示されます。

  1. すべてのファイル・ディスクリプターについての情報を 16 進数で表示するには、次のように入力します。
    fd raw
  2. 範囲 3 から 5 のファイル・ディスクリプターについての情報を表示するには、 次のように入力します。
    fd 3 5

file サブコマンド

file [ File ]

file サブコマンドは、現行ソース・ファイルを File パラメーターにより指定されたファイルに変更します。 ただし、そのファイルへの書き込みは実行しません。 File パラメーターは、ファイルへの絶対パス名を指定します。File パラメーターにパスを指定しないと、 dbx プログラムは use パスを探すことによりファイルを見つけようとします。 File パラメーターを指定しないと、 file サブコマンドは現行ソース・ファイル名を表示します。 また、パスが認識されていれば、file サブコマンドはファイルの絶対パス名または相対パス名を表示します。

  1. 現在のソース・ファイルを、main.c ファイルに変更するには、 次のように入力します。
    file main.c
  2. 現在のソース・ファイル名を表示するには、次のように入力します。
    ファイル

func サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ『現在のファイルまたはプロシージャーの変更』、および『現在のファイルの表示』も参照してください。

frame サブコマンド

frame [ num ]

frame サブコマンドは、現行関数を指定されたスタック・フレーム番号 num に対応する関数に変更します。 現行関数は、名前の解決に使用します。スタック・フレームの番号付けは、現在アクティブな関数のスタック・フレームから始まります (現在アクティブな関数フレームの番号は常に 0 となります)。n 個のフレームがある場合、main 関数のフレームの番号は n-1 になります。フレーム番号を指定しなかった場合は、現行フレームに関連した関数に関する情報が表示されます。

  1. フレーム番号 2 に移動するには、次のように入力します。
    frame 2
  2. スタック上の現行関数を表示するには、次のように入力します。
    frame

up サブコマンドおよび down サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『現在のファイルまたはプロシージャーの変更』および『スタック・トレースの表示』も参照してください。

func サブコマンド

func [ Procedure ]

func サブコマンドは、 現行関数を Procedure パラメーターにより指定されたプロシージャーまたは関数に変更します。 Procedure パラメーターを指定しないと、デフォルトの現行関数が表示されます。 現行関数を変更すると、現行ソース・ファイルが新しい関数が入ったファイルに暗黙的に変更されます。 ネーム・レゾリューションに使用される現行有効範囲も変更されます。

  1. 現行関数を、do_count プロシージャーに 変更するには、次のように入力します。
    func do_count
  2. 現行関数名を表示するには、次のように入力します。
    func

file サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ『現在のファイルまたはプロシージャーの変更』も参照してください。

goto サブコマンド

goto SourceLine

goto サブコマンドは、指定したソース行を次に実行するソース行にします。 一般に、ソース行は現行ソース行と同じ関数内に入っている必要があります。この制約を無効にするには、 $unsafegoto フラグを指定した set サブコマンドを使用します。

次に実行させる行を行 6 に変更するには、次のように入力します。

goto 6

cont サブコマンド、 gotoi サブコマンド、 および set サブコマンドを参照してください。

gotoi サブコマンド

gotoi Address

gotoi サブコマンドは、 プログラム・カウンターのアドレスを Address パラメーターにより指定されたアドレスに変更します。

プログラム・カウンターのアドレスをアドレス 0x100002b4 に変更するには、 次のように入力します。

gotoi 0x100002b4

goto サブコマンドのセクションを参照してください。

handler サブコマンド

handler { atfork | cancel_cleanup [ all | pthread id ] }

handler サブコマンドは、それぞれ pthread_atfork および pthread_cleanup_push を使用して登録されている atfork または取り消しクリーンアップのハンドラーについての情報を表示します。 atfork オプションを使用すると、preparentchild の atfork ハンドラーとして登録されているルーチンの名前が表示されます (POSIX 規則に準拠しない atfork ハンドラーの場合は、それぞれの引数とともに)。 cancel_cleanup オプションは、 特定の pthread を指定するオプショナル pthread id パラメーター、またはすべての pthread を指定する all とともに指定されて、すべての登録済み 取り消しクリーンアップ・ハンドラーを表示させます。 どちらも指定しない場合、現行の pthread の取り消しクリーンアップ・ハンドラーがあれば、それが表示されます。

  1. すべての登録済み atfork ハンドラーに関する情報を表示するには、次のように入力します。
    handler atfork
  2. 現行 pthread の登録済み取り消しクリーンアップ・ハンドラーについての情報を表示するには、 次のように入力します。
    handler cancel_cleanup
  3. $t2 と呼ばれる pthread オブジェクトの登録済み取り消しクリーンアップ・ハンドラーについての情報を表示するには、 次のように入力します。
    handler cancel_cleanup 2

help サブコマンド

help [ Subcommand | Topic ]

help サブコマンドは、指定するパラメーターに応じて、 dbx サブコマンドまたはトピックに関するヘルプ情報を表示します。 Subcommand パラメーターを指定して help サブコマンドを入力すると、 指定したサブコマンドの構文のステートメントと説明が表示されます。 Topic パラメーターを指定して help サブコマンドを入力すると、 指定したトピックの詳細な説明が表示されます。 help サブコマンドでトピック文字列全体を提供する必要はありません。 トピックの先頭から何文字かを指定すれば、dbx プログラムはトピックを認識できます。 以下のトピックを表示することができます。

項目 説明
startup dbx 始動オプションを表示します。
execution プログラムの実行に関連する dbx サブコマンドを表示します。
breakpoints ブレークポイントとトレースに関連する dbx サブコマンドを表示します。
ファイル ソース・ファイルにアクセスするための dbx サブコマンドを表示します。
data プログラム変数とデータにアクセスするための dbx サブコマンドを表示します。
machine マシン・レベルのデバッグ用の dbx サブコマンドの説明を表示します。
environment dbx の構成と環境を設定するための dbx サブコマンドを表示します。
threads スレッド関連オブジェクトにアクセスするための dbx サブコマンドを表示します。
dbx の式の構文と演算子を記述します。
scope dbx により異なる有効範囲からの名前の解決方法を記述します。
set_variables dbx デバッグ変数とその使用方法を表示します。
usage 共通 dbx サブコマンドとその簡単な説明を表示します。

  1. 使用可能なすべての dbx サブコマンドとトピックを表示するには、 次のように入力します。
    help
  2. dbx サブコマンド、 list の説明を表示するには、次のように入力します。
    help list
  3. dbx トピック、 set_variables の説明を表示するには、 次のように入力します。
    help set_variables

ignore サブコマンド

ignore [ SignalNumber | SignalName ]

ignore サブコマンドは、指定するシグナルがアプリケーション・プログラムに送信される前に、 そのシグナルのトラッピングを停止します。このサブコマンドは、 デバッグ中のアプリケーション・プログラムが割り込みなどのシグナルを処理する場合に有効です。

トラップされるシグナルは、以下のいずれかの方法で指定できます。

  • 番号。SignalNumber パラメーターを使用。
  • 名前。SignalName パラメーターを使用。

シグナル名は、大文字と小文字の区別はありません。SIG プレフィックスはオプションです。

SignalNumber パラメーターおよび SignalName パラメーターを指定すると、デフォルトとして、SIGHUPSIGCLDSIGALRMSIGKILL を除くすべてのシグナルがトラップされます。 dbx デバッグ・プログラムは、 デバッガーの外側のプロセスから発生した SIGTRAP シグナルを、 無視することはできません。引数を指定しない場合は、現在無視されているシグナルのリストが表示されます。

アプリケーション・プログラムに送信されるアラーム・クロック・タイムアウト・シグナルを dbx で無視させるには、 次のように入力します。

ignore alrm

catch サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグシグナルの処理』も参照してください。

kthread サブコマンド

kthread [ raw ] [ info | ru ] [ tid ]

kthread サブコマンドは、カーネル・スレッドについての情報を表示します。 raw オプションを使用すると、より読みやすいフォーマットで表示できるかどうかにかかわらず、すべての出力が 16 進数で表示されます。引数を使用しないと、すべてのカーネル・スレッドについての要約情報が印刷されます。 数字スレッド ID を提供すると、dbx コマンドは単一スレッドについての情報を示します。また、info オプションを使用すると、ユーザー・スレッド構造から、 スレッドについてのより詳細な出力が出されます。 ru オプションは、ti_ru データ・メンバーを 表示します。この中には、リソース使用情報が入っています。

ユーザー・スレッドの詳細については、thread subcommand を参照してください。

  1. 現在実行しているスレッドについての情報を検出するには、 まずコマンド・ラインに以下を入力することによって、 すべてのスレッドについての情報を入手してください。
    kthread
    dbx コマンドがプロセスを停止する直前に実行していた (または実行可能だった) スレッドはアスタリスクでマークされています。その出力に基づいて正しいスレッド ID を選択し、入力します。
    kthread info tid
  2. すべてのスレッドについてのリソース情報を 16 進数で表示するには、次のように入力します。
    kthread raw ru

limitbp サブコマンド

limitbp ( bp1, Limit ) [ ( bp2, [ + ] Limit ) … ]

limitbp サブコマンドは、ブレークポイントが指定された回数実行された場合に限りデバッグ・プログラムの実行を停止するように dbx コマンドに指示します。 制限値の前に「+」文字がある場合は、そのイベントの制限値がサブコマンドに指定された制限値と、イベントが既に実行された回数の合計に変更されます。すなわち、dbx コマンドは、limitbp サブコマンドが既に実行された後に、指定された Limit だけブレークポイントを実行する場合にデバッグ・プログラムの実行を停止します。

  1. ブレークポイント 110 回実行する場合にデバッグ・プログラムの実行を停止するように dbx コマンドに指示するには、次のように入力します。
    limitbp (1, 10)
  2. ブレークポイント 115 回実行するか、またはブレークポイント 220 回実行する (あるいはその両方) 場合にデバッグ・プログラムの実行を停止するように dbx コマンドに指示するには、次のように入力します。
    limitbp (1, 15) (2, 20)
  3. limitbp サブコマンドが実行された後に、ブレークポイント 120 回実行する場合にデバッグ・プログラムの実行を停止するように dbx コマンドに指示するには、次のように入力します。
    limitbp (1, +20)

list サブコマンド

list [ Procedure | SourceLine-Expression [ ,SourceLine-Expression ] | at Address ]

list サブコマンドは、ソース・ファイルの指定行番号を表示します。表示される行番号を指定する方法は、以下のいずれかです。

  • Procedure パラメーターを使用して、プロシージャーを指定する方法。

    この場合には、list サブコマンドは、 指定したプロシージャーの数行前から、リスト・ウィンドウがいっぱいになるまで行を表示します。

  • SourceLine-Expression パラメーターを使用して、 開始ソース行番号と終了ソース行番号を指定する方法。

    SourceLine-Expression パラメーターには、有効な行番号、オプションの + (正符号) または - (負符号)、整数の順に指定する必要があります。また、$ (ドル記号) の SourceLine は、現在行の番号を示すのに使用でき、 @ (アットマーク) の SourceLine は、表示される次の行番号を示すのに使用できます。

  • $listwindow の内部 dbx 変数を指定する方法。

    パラメーターの指定をしないで、list サブコマンドを使用すると、$listwindow 変数で指定された行数が、現行ソース行から始まって出力されます。デフォルトの行数を変更するには、$listwindow 変数を必要な行数に設定します。$listwindow 変数は、特殊なデバッグ・プログラム変数です。初めは $listwindow 変数は 10 に設定されています。

2 番目のソース行を省略すると、1 行目のみが表示されます。

最初に指定した行番号から 2 番目に指定した行番号まで (両方の行番号を含む) のすべての行が表示されます。

list サブコマンドで at パラメーターの後にアドレスを指定すると、list サブコマンドは、指定されたアドレスに対応するソース行を表示します。アドレスは、10 進または 16 進の符号なし整数、あるいは $iar$tfiar、および $tfhar などのレジスターまたはデバッグ変数に対応するニーモニックとして指定できます。

  1. 現在のファイルの、1 行目から 10 行目までを表示するには、次のように入力します。
    list 1,10
  2. main プロシージャーの前後を、 10 行、 すなわち、$listwindow 行分表示するには、次のように入力します。
    list main
  3. 現在行の前後の 11 行を表示するには、次のように入力します。
    list $-5,$+5
  4. SourceLineExpression の式の中で、 加算および減算などの簡単な整数式を使用することもできます。 次に例を示します。
    (dbx) list $
    4 {
    
    (dbx) list 5
    5 char i = '4';
    
    (dbx) list sub
    23 char *sub(s,a,k)
    24 int a;
    25 enum status k;  .  .  .  
    
    (dbx) move 
    25
    (dbx) list @ -2
    23 char *sub(s,a,k)
  5. 特定のアドレスに対応するソース行を表示することができます。例えば次のとおりです。
    (dbx) r
    [1] stopped in main at line 5
        5 int i, sum = 0;
    
    (dbx) list at $iar
    source file: "tt.c"
        5 int i, sum = 0;
        6 int last = 0;
        7
        8 scanf("%d", &last);
        9 
        10 for ( i = 1; i &lt;=last; i++ ) { 
        11 sum += i; 
        12 } 
        13 printf("sum = %d¥n", sum); 
        14 
    
    (dbx) list at ($iar+16) 
    source file: "tt.c" 
        8 scanf("%d", &last); 
        9 
        10 for ( i = 1; i <= last; i++ ) { 
        11 sum += i; 
        12 } 
        13 printf("sum = %d¥n", sum); 
        14 
        15 return 0; 
        16 }

edit サブコマンド、 listi サブコマンド、 および move サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ現在のファイルの表示』も参照してください。

listi サブコマンド

listi [ Procedure | at SourceLine | Address [ , Address ] ]

listi サブコマンドは、 ソース・ファイルの指定した一連の命令を表示します。表示する命令は、以下の方法で指定します。

  • Procedure パラメーターを指定すると、 listi サブコマンドは、リスト・ウィンドウがいっぱいになるまで、 指定するプロシージャーの最初から命令を表示します。
  • at SourceLine フラグを 使用すると、listi サブコマンドは指定したソース行から始めて、 リスト・ウィンドウがいっぱいになるまで命令の表示を続けます。 SourceLine 変数は、整数として、または : (コロン) と整数が続くファイル名文字列として指定できます。
  • Address パラメーターを使用して、 開始アドレスと終了アドレスを指定すると、 この 2 つのアドレス間のすべての命令 (両方のアドレスの命令を含む) が表示されます。

listi サブコマンドをフラグまたはパラメーターを指定しないで使用すると、 次の $listwindow 命令が表示されます。リスト・ウィンドウの現行サイズを変更するには、 set $listwindow=Value サブコマンドを使用します。

逆アセンブリー・モード

dbx プログラムは、POWER® family または PowerPC® のどちらのアーキテクチャーの命令も逆アセンブルすることができます。デフォルト・モードでは、 dbx プログラムはこのプログラムが動作しているアーキテクチャーの命令を表示します。

dbx コマンドの set サブコマンドの $instructionset 変数および $mnemonics 変数を使用すると、 デフォルトの逆アセンブリー・モードを指定変更できます。 詳細については、dbx コマンドの set サブコマンドを参照してください。

フラグ

項目 説明
at SourceLine リストを開始するソース行を指定します。

  1. 次の 10 個の命令、 すなわち $listwindow 個の命令を表示するには、 次のように入力します。
    listi
  2. ソース行の 10 行目以降のマシン・インストラクションを表示するには、 次のように入力します。
    listi at 10
  3. sample.c ファイルのソース行の、 5 行目以降のマシン・インストラクションを表示するには、 次のように入力します。
    listi at "sample.c":5
  4. アドレス 0x10000400 と、 0x10000420 の間の命令を表示するには、 次のように入力します。
    listi 0x10000400, 0x10000420

list サブコマンド、 および set サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグdbx によるマシン・レベルのデバッグ』も参照してください。

malloc サブコマンド

malloc [ > File ]

オプションを指定しない malloc サブコマンドは、 使用可能なオプション、割り振りポリシー、およびプロセス起動以来の malloc 使用統計要約を印刷します。

malloc [ allocation [ { address | size | heap | pid | tid | time } { "<" | "==" | ">" "!=" | “~=” ]} Value ] ] [ > File ]

malloc サブコマンドに allocation オプションを指定すると、 プロセスが現在保持しているすべての割り振りのリストがソートして表示されます。 オプションの attribute RELOP value 引数を使用すると、 アクティブになっている割り振りからさらに選択を狭めることができます。

malloc [ freespace [ { address | size | heap } { "<" | "==" | ">" | "!=" | “~=”]} Value ] ] [ > File ]

malloc サブコマンドに freespace オプションを指定すると、 プロセス・ヒープで使用可能なすべてのフリー・スペースのリストがソートして表示されます。 オプションの attribute RELOP value 引数を使用すると、 フリー・スペース・ノードの選択をさらに狭めることができます。

注: ~= 演算子は、address オプションを指定した場合にのみ使用できます。この演算子は、指定されたアドレスが属するフリー・スペース・ノードまたは割り当てノードを取り出すために使用されます。

malloc address

アドレスを指定した malloc サブコマンドにより、アドレスのノード詳細が表示されます。このアドレスは、割り当てられたノードまたはフリー・ノードの開始アドレスである必要はありません。

フラグ

項目 説明
> File 指定したファイルに出力をリダイレクトします。

詳しくは、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『malloc サブシステムを 使用したシステム・メモリーの 割り当て』を参照してください。

map サブコマンド

map { [Format] [ entry ModuleNumber [ , ModuleNumber ] | Address | SymbolName ] [for $tthreadnumber] [ > File ] }

map サブコマンドは、 アプリケーションのロードされた部分の特性を表示します。 この情報には、ロードされた各モジュールについて、モジュール名、メンバー名、テキストの始まり、テキストの終わり、テキスト長、データの始まり、データの終わり、データ長、TLS データの始まり、TLS データの終わり、TLS データ長、およびファイル・ディスクリプターが含まれます。 表示するエントリーは、次のように指定できます。
  • ModuleNumber パラメーターを使用して、 単一エントリーを指定する方法。
  • コンマで区切った 2 つの ModuleNumber パラメーターを使用して、 エントリーの範囲を指定する方法。
  • Address パラメーターを使用して、 ロードされているモジュールに解決されるアドレスを指定する方法。
  • SymbolName パラメーターを使用して、 ロードされているモジュールに解決されるシンボル名を指定する方法。

上記のいずれも指定しないで呼び出されると、map サブコマンドは、 そのアプリケーションのロードされたすべての部分についての情報を表示します。

Format 引数は、ロードされたモジュールの説明を 出力するモードを指定します。 Format 引数に指定できる値には、以下のものがあります。
項目 説明
abbr 省略出力モードを指定します。この場合、ロードされた各モジュールは 1 行で構成され、 そのモジュールのエントリー番号、 モジュール名、オプションとしてメンバー名を含みます。
normal 通常出力モードを指定します。この情報には、ロードされた各モジュールについて、 エントリー番号、モジュール名、メンバー名、テキストの始まり、 テキスト長、データの始まり、データ長、およびファイル・ディスクリプターが含まれます。 ロードされたモジュールに TLS データがある場合、TLS データの始まりおよび TLS データ長も表示されます。
raw ロウ出力モードを指定します。この場合、出力は、ロードされた各モジュールについて 不定形式の 1 行で構成され、その中には、エントリー番号、 モジュール名とオプションのメンバー名、テキストの始まり、 テキストの終わり、テキスト長、データの始まり、データの終わり、データ長、 およびファイル・ディスクリプターが、スペースで分離されたフィールドとして含まれます。 ロードされたモジュールに TLS データがある場合、TLS データの始まり、TLS データの終わり、および TLS データ長も表示されます。
verbose 詳細出力を指定します。この情報には、ロードされた各モジュールについて、 エントリー番号、モジュール名、メンバー名、テキストの始まり、テキストの終わり、 テキスト長、データの始まり、データの終わり、 データ長、およびファイル・ディスクリプターが含まれます。 ロードされたモジュールに TLS データがある場合、TLS データの始まり、TLS データの終わり、および TLS データ長も表示されます。

Format パラメーターを指定しないと、dbx コマンドは $mapformat 内部変数の値を使用します。Format パラメーターの指定がなく、 かつ、$mapformat が設定解除されている場合は、dbx コマンドは、 ロードされたモジュールの情報を通常モードで表示します。

ロードされたモジュールに TLS データがある場合、指定されたスレッドの TLS データ情報が表示されます。 スレッドが指定されていない場合は、現行スレッドが使用されます。

フラグ

項目 説明
>File 指定したファイルに出力をリダイレクトします。
entry ModuleNumber [ , ModuleNumber ] 表示するモジュールまたはモジュールの範囲を指定します。
for $t threadnumber スレッド番号を指定します。

  1. ロードされたすべてのモジュールを省略モードでリストするには、次のように入力します。
    map abbr
  2. ロードされたモジュール 3 から 5 を詳細モードでリストするには、次のように入力します。
    map verbose entry 3,5
  3. アドレス 0x20001000 を含むロードされたモジュールをリストするには、次のように入力します。
    map 0x20001000
  4. 変数 example を含むロードされたモジュールをリストするには、次のように入力します。
    map example
  5. ロードされたモジュールをスレッド 2 のモジュールの TLS データ情報とともに通常モードでリストするには、次のように入力します。
    map normal for $t2

詳しくは、$mapformat 内部変数を参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグdbx によるマシン・レベルのデバッグ』も参照してください。

move サブコマンド

move SourceLine

move サブコマンドは、次に表示される行を、 SourceLine パラメーターで指定した行に変更します。 このサブコマンドは、@ (アットマーク) 変数の値を変更します。

SourceLine 変数は、整数として、 または : (コロン) および整数が後ろに続くファイル名文字列として指定できます。

  1. 次に表示される行を 12 行目に変更するには、 次のように入力します。
    move 12
  2. 次に表示される行を、 sample.c ファイルの 5 行目に変更するには、 次のように入力します。
    move "sample.c":5

list サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ『現在のファイルの表示』も参照してください。

multproc サブコマンド

multproc [ on | parent | child | off ]

multproc サブコマンドは、fork 先と fork 元のプロセスが 作成されたときに、dbx デバッグ・プログラムの動作を 指定します。 on フラグを使用すると、fork の子パスをデバッグするために、 新しい dbx セッションが作成されるように指定することができます。 元の dbx は、 親パスのデバッグを続行します。parent フラグと child フラグを 使用すると、検索対象とする fork の単一パスを指定することができます。 off を除くすべてのフラグにより、 dbx が fork 元のプロセスを追跡できるようになります。 off フラグを指定すると、 マルチプロセス・デバッグが使用不可になります。 フラグを指定しないと、multproc サブコマンドはマルチプロセス・デバッグの状況を戻します。

dbx プログラムは、 マルチプロセスのデバッグに X Window System を使用します。dbx プログラムは、 マルチプロセスに必要な数だけウィンドウをオープンします。 各子ウィンドウの名称は、子プロセスのプロセス ID (pid) です。 プロセス間で切り替えるには、X Window System の取扱方法に従い、dbx コマンド・セッションが表示されている ウィンドウをアクティブにします。使用中のシステムが X Window System をサポートしていない場合は、 デバッガーが fork を実行したときに警告メッセージが表示され、 dbx プログラムは親プロセスのデバッグのみを続行します。また、マルチプロセスのデバッグは、以下の原因でうまくいかない場合もあります。

  • dbx プログラムが、 X Window System 環境で動作していない場合。
  • X Window System は動作しているが、 dbx のグローバル $xdisplay 変数が、 有効な表示名に設定されていない場合。$xdisplay 変数は、シェル DISPLAY 環境変数に対して初期化されます。 dbx サブコマンドの set Name=Expression を使用すると、 表示名の値を変更できます。
  • /tmp ディレクトリーが、 デバッグ・プログラムに対して読み取りまたは書き込みアクセスを許可しない場合。dbx プログラムは、X Window 環境を制御するときに、 このディレクトリー内に小さなスペースを必要とします。
  • システムのリソース不足のため、 新しい X Window に対応できない場合。

$xdisplay がリモート・ディスプレイに設定されていると、 新しく作成した X Window が表示されないことがあります。 $xdisplay が正しく設定されていないと、X Window System または他のシステム・リソースにより障害の原因が表示されます。

dbx プログラムは障害のタイプを識別しませんが、 サブコマンドが失敗すると次のメッセージが送信されます。

Warning: dbx subcommand multiproc fails. dbx 
continued with multproc disabled.

新しく作成したウィンドウのユーザー定義設定は、 .Xdefaults ファイル内でアプリケーション名 dbx_term を付けて定義することができます。

フラグ

項目 説明
on マルチプロセス・デバッグを使用可能にします。
off マルチプロセス・デバッグを使用不可にします。

  1. マルチプロセス・デバッグの状況を確認するには、 次のように入力します。
    multproc
  2. マルチプロセス・デバッグを使用可能にするには、 次のように入力します。
    multproc on
  3. マルチプロセス・デバッグを使用不可にするには、 次のように入力します。
    multproc off 

screen サブコマンドと、 fork サブルーチンを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のプロセスを含むプログラムのデバッグ』も参照してください。

mutex サブコマンド

mutex [ lock | unlock | thnum | utid |  MutexNumber ... ]

mutex サブコマンドは、mutex に関する情報を表示します。MutexNumber パラメーターを指定すると、mutex サブコマンドは指定した mutex に関する情報を表示します。 フラグまたはパラメーターを指定しなければ、 mutex サブコマンドはすべての mutex に関する情報を表示します。

各 mutex について表示される情報は、以下のとおりです。

項目 説明
mutex mutex のシンボル名を $mMutexNumber フォーマットで示します。
type mutex のタイプを示します。タイプには、non-rec (非再帰的)、 recursi (再帰的)、 fast があります。
obj_addr mutex のメモリー・アドレスを示します。
lock mutex のロック状態を示します。mutex がロックされていれば yes、 ロックされていなければ no です。
owner mutex がロックされている場合は、その mutex を保持しているユーザー・スレッドのシンボル名を示します。
blockers この mutex 変数でブロックされるユーザー・スレッドをリストします。
注: dbx デバッグ・プログラムの print サブコマンドは、シンボルによる mutex 名を認識し、 対応するオブジェクトの状況を表示するために使用できます。

フラグ

項目 説明
lock ロックされている mutex に関する情報を表示します。
unlock ロックされていない mutex に関する情報を表示します。
thnum 特定のスレッドが保持するすべての mutex の情報を表示します。
utid ユーザー・スレッド ID に一致するユーザー・スレッド ID をもつユーザー・スレッドが保持する、 すべての mutex の情報を表示します。

  1. すべての mutex に関する情報を表示するには、 次のように入力します。
    mutex
  2. すべてのロック状態の mutex に関する情報を表示するには、 次のように入力します。
    mutex  lock
  3. mutex 番号 4、5、6 に関する情報を表示するには、 次のように入力します。
    mutex 4 5 6
    出力は以下のようになります。
    mutex   obj_addr         type     lock owner  blockers
    $m4    0x20003274        non-rec   no
    $m5    0x20003280        recursi   no
    $m6    0x2000328a        fast      no
  4. スレッド 1 が保持するすべての mutex の情報を表示するには、次のように入力します。
    mutex thnum 1
  5. 0x0001 というユーザー・スレッド ID のスレッドが保持する、すべての mutex の情報を表示します。
    mutex utid 0x0001

attribute サブコマンド、 condition サブコマンド、 print サブコマンド、 thread サブコマンドを参照してください。

また、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『mutex の使用』も参照してください。

next サブコマンド

next [ Number ]

next サブコマンドは、アプリケーション・プログラムを次のソース行まで実行します。 Number パラメーターは、next サブコマンドの実行回数を指定します。Number パラメーターを指定しないと、next は 1 回だけ実行されます。

マルチスレッド・アプリケーション・プログラム内で next サブコマンドを使用すると、操作中にすべてのユーザー・スレッドが実行されますが、プログラムは実行中のスレッドが指定のソース行に達するまで実行を継続します。 実行中のスレッドのみを進行させる場合は、 set サブコマンドを使用して変数 $hold_next を設定します。 この変数を設定すると、実行中のスレッドがブロック化されているスレッドの 1 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。

  1. 次のソース行まで実行を継続するには、次のように入力します。
    next
  2. 現行ソース行の次から数えて 3 番目のソース行まで実行を継続するには、 次のように入力します。
    next 3

cont サブコマンド、 goto サブコマンド、 nexti サブコマンド、 set サブコマンド、 および step サブコマンドを参照してください。

nexti サブコマンド

nexti [ Number ]

nexti サブコマンドは、 次の命令までアプリケーション・プログラムを実行します。 Number パラメーターは、nexti サブコマンドの実行回数を指定します。 Number パラメーターを指定しないと、nexti は 1 回だけ実行されます。

マルチスレッド・アプリケーション・プログラム内で nexti サブコマンドを使用すると、操作中にすべてのユーザー・スレッドが実行されますが、プログラムは実行中のスレッドが指定のマシン・インストラクションに達するまで実行を継続します。 実行中のスレッドのみを進行させる場合は、 set サブコマンドを使用して変数 $hold_next を設定します。 この変数を設定すると、実行中のスレッドがブロック化されているスレッドの 1 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。

  1. 次のマシン・インストラクションまで実行を続行するには、次のように入力します。
    nexti
  2. 現在のマシン・インストラクションの次から数えて 3 番目のマシン・インストラクションまで実行を継続するには、 次のように入力します。
    nexti 3

gotoi サブコマンド、 next サブコマンド、 set サブコマンド、および、 stepi サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグマシン・レベルでのプログラムの実行』も参照してください。

onceblock サブコマンド

onceblock [ uninit | done ]

onceblock サブコマンドは、pthread_once ルーチン を使用して登録された初期設定コードのブロックについての情報を表示します。 引数を指定しない場合は、すべての登録済み once block についての情報が表示されます。 オプションの uninit および done のフラグは、それぞれ、実行されていない、または、 既に実行された once block のみを表示します。ただし、数字の once ID を指定した場合は、単一の once block についての情報が表示されます。

注: ライブ・プロセスのデバッグ中に onceblock サブコマンドが機能するためには、環境変数 AIXTHREAD_ONCE_DEBUG を ON に設定しておく必要があります。 同様に、コア・ファイルのデバッグで、プロセスの実行時にこの変数が ON になっていなかった場合は、onceblock サブコマンドは情報を取得することができません。

  1. どの once block もまだ実行されていないかどうかを検出するには、次のように入力します。
    onceblock uninit

plugin サブコマンド

plugin [ Name [ Command ] ]

plugin サブコマンドは、Command パラメーターにより指定されたコマンドを、Name パラメーターで指定されたプラグインに渡します。パラメーターを指定しないと、使用可能なすべてのプラグインの名前が表示されます。

  1. 使用可能なすべてのプラグインをリストするには、次のように入力します。
    plugin
  2. 「sample」という名前のプラグインのサブコマンド「help」を開始するには、次のように入力します。
    plugin sample help
  3. xyz」という名前のプラグインのサブコマンド「interpret 0x20000688」を開始するには、次のように入力します。
    plugin xyz interpret 0x20000688

pluginload サブコマンド、および pluginunload サブコマンドを参照してください。 また、「プログラミングの一般概念」の『dbx プラグイン・フレームワーク用の開発』のセクションも参照してください。

pluginload サブコマンド

pluginload File

pluginload サブコマンドは、File パラメーターで指定されたプラグインをロードします。 File パラメーターでプラグインのパスを指定する必要があります。
注: デフォルトの dbx コマンドは 64 ビット・プロセスであるため、32 ビットのプラグインをロードするには dbx32 という 32 ビット版の dbx コマンドを使用する必要があります。

/home/user/dbx_plugins/libdbx_sample.so」にある「sample」という名前のプラグインをロードするには、次のように入力します。
pluginload /home/user/dbx_plugins/libdbx_sample.so

plugin サブコマンド、および pluginunload サブコマンドを参照してください。 また、「プログラミングの一般概念」の『dbx プラグイン・フレームワーク用の開発』のセクションも参照してください。

pluginunload サブコマンド

pluginunload Name

pluginunload サブコマンドは、Name パラメーターで指定されたプラグインをアンロードします。

sample」という名前のプラグインをアンロードするには、次のように入力します。
pluginunload sample

plugin サブコマンド、および pluginload サブコマンドを参照してください。 また、「プログラミングの一般概念」の『dbx プラグイン・フレームワーク用の開発』のセクションも参照してください。

print サブコマンド

print Expression ...

print Procedure ( [ Parameters ] )

print サブコマンドは、以下のいずれかの操作を実行します。

  • Expression パラメーターにより指定された、 式のリストの値を表示します。
  • Procedure パラメーターにより指定されたプロシージャーを実行し、 そのプロシージャーの戻り値を表示します。指定されたパラメーターはプロシージャーに渡されます。

  1. x の値と、 y の値を、2 ビット左にシフトして表示するには、 次のように入力します。
    print x, y << 2
  2. 引数 0 で、 sbrk ルーチンを呼び出すことにより戻される値を表示するには、 次のように入力します。
    print sbrk(0)

assign サブコマンド、 call サブコマンド、および、 set サブコマンドを参照してください。

printbp サブコマンド

printbp [ bp1 ] [ bp2 ] ... | all

printbp サブコマンドは、各ブレークポイントまたはすべてのサブコマンドが実行された回数、およびブレークポイントの制限の詳細 (制限が設定されている場合) を印刷するように dbx コマンドに指示します。

  1. ブレークポイント 1 が実行された回数、および設定された制限の詳細を印刷するように dbx コマンドに指示するには、次のように入力します。
    printbp 1
  2. ブレークポイント 12 が実行された回数を印刷し、ブレークポイント 12 を実行できる回数を制限する (制限が設定されている場合) ように dbx コマンドに指示するには、次のように入力します。
    printbp 1, 2
  3. すべてのブレークポイントが実行された回数、およびブレークポイントの制限の詳細 (該当する場合) を印刷するように dbxコマンドに指示するには、次のように入力します。
    printbp all

proc サブコマンド

proc [ raw ] [ cred | cru | ru | sigflags | signal ]

proc サブコマンドは、このプロセスについての情報を表示します。 raw オプションを使用すると、もっと読みやすい 方式で値を解釈することはせず、出力をロウ 16 進数で表示します。 追加の引数を指定せずに proc サブコマンドを使用すると、 このプロセスについての一般情報が、 ユーザー・プロセス・データ構造に保管されているとおりに出力されます。 cred オプションは、pi_cred データ・メンバーの 内容を表示します。これは、プロセスのクリデンシャルを記述するものです。 cruru のオプションは、 データ・メンバー pi_crupi_ru をそれぞれ表示します。 これらには、リソース使用情報が入っています。 sigflagssignal のオプション は、pi_sigflagspi_signal のデータ・メンバー内に 入っているとおりに、現行のシグナルの状況と登録済みのシグナル・ハンドラーに関する情報を表示します。

  1. 現行プロセス (またはコア・ファイル) についてのリソース使用について、 ロウ 16 進数で表示するには、次のように入力します。
    proc raw ru
  2. シグナル・ハンドラーの情報を表示するには、次のように入力します。
    proc signal

prompt サブコマンド

prompt [ "String" ]

prompt サブコマンドは、 dbx コマンド・プロンプトを String パラメーターにより指定された文字列に変更します。

プロンプトを dbx> に変更するには、次のように入力します。

prompt "dbx>"

プログラミングの一般概念: プログラムの作成およびデバッグ新規 dbx プロンプトの定義』を参照してください。

quit サブコマンド

quit

quit サブコマンドは、 dbx デバッグ・セッションで実行しているすべてのプロセスを終了します。

detach サブコマンドを参照してください。

registers サブコマンド

registers [ ALL | $tthreadnumber … ] [ >File ]

registers サブコマンドは、汎用レジスター、システム制御レジスター、浮動小数点レジスター、ベクトル・レジスター、および現行命令レジスターの値を表示します。

  • 汎用レジスターは、 $rNumber 変数により示されます。 ここでは、Number パラメーターはレジスターの番号を示します。

    注: レジスターの値は、0xdeadbeef 16 進値に設定される場合があります。 0xdeadbeef 16 進値は、プロセスの初期設定時に汎用レジスターに割り当てられる初期値です。

  • 浮動小数点レジスターは、 $frNumber 変数により示されます。デフォルトでは、浮動小数点レジスターは表示されません。 浮動小数点レジスターを表示するには、dbx サブコマンドの unset $noflregs を使用します。
  • ベクトル・レジスターは、$vrNumber 変数により 示されます。$novregs 内部変数は、ベクトル・レジスターを表示するかどうかを制御します。 $novregs 変数はデフォルトで設定され、ベクトル・レジスターは表示されません。 $novregs が設定されず、ベクトル・レジスターが有効 (ベクトル対応プロセッサーでの プログラムのデバッグ、またはベクトル・レジスター状態を含むコア・ファイルの分析) の 場合は、すべてのベクトル・レジスター (vr0–vr31、vrsave、vscr) が表示されます。 ベクトル・レジスターは、タイプ別に参照することもできます。 例えば、$vrNf (float)、 $vrNs (short)、および $vrNc (char) のベクトル・レジスター変数 と print および assign サブコマンドを併用して、タイプ別に ベクトル・レジスターを表示および設定することができます。
  • ベクトル・スカラー・レジスターは、$vsrNumber 変数により示されます。 デフォルトでは、ベクトル・スカラー・レジスターは表示されません。(ベクトル・スカラー対応プロセッサーでの プログラムのデバッグ、またはベクトル・スカラー・レジスター状態を含むコア・ファイルの分析において) ベクトル・スカラー・レジスターが有効な場合に必ずベクトル・スカラー・レジスターを表示するには、$novsregs 変数を設定解除します。ベクトル・スカラー・レジスターは従来の浮動小数点レジスターおよびベクトル・レジスターのスーパーセットであるため、デバッグ変数 $novsregs を設定解除すると、ベクトル・スカラー・レジスター状態が有効な場合には常に $noflregs および $novsregs より優先します。registers サブコマンドは、ベクトル・スカラー・レジスターを従来のレジスター別名と一緒に中括弧で囲んで表示します。浮動小数点レジスターの別名は、下位 64 ビットにのみ対応します。ベクトル・スカラー・レジスターは、ベクトル・レジスターと同様にタイプ別に参照することもできます。例えば、$vsrNf (float)、$vsrNs (short)、$vsrNc (char)、$vsrNg (double) および $vsrNll (long long) のベクトル・スカラー・レジスター変数と print および assign サブコマンドを併用して、タイプ別に ベクトル・スカラー・レジスターを表示および設定することができます。
  • マルチスレッド環境では、オプション ALL を指定すると、使用可能なすべてのスレッドのレジスターの詳細が表示されます。各スレッドのレジスターの詳細を表示するには、registers サブコマンドを使用してスレッド番号を指定します。registers サブコマンドをオプションなしで使用すると、現行スレッドのレジスターが表示されます。
注: 現行スレッドがカーネル・モードになっている場合は、 registers サブコマンドはレジスターを表示できません。

フラグ

項目 説明
>File 指定したファイルに出力をリダイレクトします。

set サブコマンド、 および unset サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグマシン・レジスターの使用』も参照してください。

スレッド $t1、$t2、および $t3 のレジスターの詳細を表示するには、次のように入力します。
registers $t1 $t2 $t3

set サブコマンド、 および unset サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグマシン・レジスターの使用』も参照してください。

rerun サブコマンド

rerun [ Arguments ] [ < File ] [ > File ] [ > > File ] [ 2> File ] [ 2> > File ] [ >& File ] [ > >& File ]

rerun サブコマンドは、オブジェクト・ファイルの実行を開始します。 Arguments は、コマンド・ラインの引数として渡されます。Arguments パラメーターを指定しないと、 最後に実行した run サブコマンドまたは rerun サブコマンドの引数が再使用されます。

フラグ

項目 説明
<File 入力が File から受け取られるように、入力をリダイレクトします。
>File 出力を File にリダイレクトします。
> >File リダイレクトされた出力を File に追加します。
2>File 標準エラーを File にリダイレクトします。
2> >File リダイレクトされた標準エラーを File に追加します。
>&File 出力および標準エラーを File にリダイレクトします。
> >&File 出力および標準エラーを File に追加します。

run サブコマンドを参照してください。

resource サブコマンド

resource { owner | waiter } [ all | pthread id ]

resource サブコマンドは、pthread が現在保持している、 または待機しているリソースについての情報を表示します。 1 番目の引数は必須であり、リソースを所有している pthread、またはリソースを 待機している pthread のどちらを表示したいかを示します。 2 番目の引数は、すべての pthread を指示するため、または特定の pthread を 指示するために使用できます。どちらも指定しないと、現行の pthread がある場合は、それに関係する情報のみが表示されます。

注: resource サブコマンドは、 いくつかのデバッグ用環境変数を ON に設定して実行しているデバッグ・プロセスにのみ役立ちます。 これらの環境変数の中には、 AIXTHREAD_MUTEX_DEBUG、 AIXTHREAD_COND_DEBUG、 AIXTHREAD_RWLOCK_DEBUG、 AIXTHREAD_READ_OWNER および AIXTHREAD_WAITLIST_DEBUG があります。 ライブ・プロセスのデバッグ中にこれらの変数がオンになっていない場合、またはデバッガー・コア・ファイルの生成時にこれらの変数がオンになっていなかった場合は、resource サブコマンドは、より少ない情報しか検索できないか、または情報をまったく検索できません。 これらの機能は、使用するとパフォーマンスが低下するおそれがあるので、 デバッグの目的にだけ活動化するようにお勧めします。

  1. 現行の pthread が何らかのリソースを保持しているか確認するには、 次のように入力します。
    resource owner
  2. いずれかの pthreads が待機しているリソースを表示するには、 次のように入力します。
    resource waiter all

return サブコマンド

return [ Procedure ]

return サブコマンドは、 Procedure パラメーターにより指定されたプロシージャーに戻るまで、アプリケーション・プログラムを実行させます。 Procedure パラメーターを指定しないと、 現行プロシージャーが戻ったときに実行が停止します。

  1. 呼び出し側のルーチンまで実行を継続するには、次のように入力します。
    return
  2. main プロシージャーまで実行を継続するには、 次のように入力します。
    return main 

rwlock サブコマンド

rwlock [read | write | RwlockNumber....]

rwlock サブコマンドは、rwlock に関する情報を表示します。 RwlockNumber パラメーターを指定すると、 rwlock サブコマンドは指定された rwlock に関する情報を表示します。 フラグまたはパラメーターが指定されない場合、rwlock サブコマンドはすべての rwlock に関する情報を表示します。

rwlock に関する情報を、以下に示します。

項目 説明
rwl rwlock のシンボル名を $rw RwlockNumber フォーマットで示します。
flag_value フラグ値を示します。
owner rwlock のオーナーを示します。
status rwlock の保持者を示します。 値は、read (リーダーが保持する場合)、write (ライターが保持する場合)、free (空きの場合) です。
wsleep[#] 書き込みでのスレッドのブロッキングを示します。 # は、書き込みでのスレッドのブロッキングの合計数を示します。
rsleep[#] 読み取りでのスレッドのブロッキングを示します。 # は、読み取りでのスレッドのブロッキングの合計数を示します。
注: dbx デバッグ・プログラムの print サブコマンドは、シンボルによる rwlock 名を認識し、 対応するオブジェクトの状況を表示するために使用できます。

フラグ

項目 説明
read 状況が読み取りモードにあるすべての rwlock に関する情報を表示します。
write 状況が書き込みモードにあるすべての rwlock に関する情報を表示します。

  1. すべての rwlock に関する情報を表示するには、次のように入力します。
    rwlock

    出力は以下のようになります。

    rwl     flag_value    owner status
    $rwl        1         $t1    write
            rsleeps[     0]:
            wsleeps[     0]:
  2. 書き込みモードにあるすべての rwlock に関する情報を表示するには、次のように入力します。
    rwlock write

    出力は以下のようになります。

    rwl     flag_value    owner status
    $rwl        1         $t1    write
            rsleeps[     0]:
            wsleeps[     0]:

attribute サブコマンド、 condition サブコマンド、 mutex サブコマンド、 print サブコマンド、 thread サブコマンドを参照してください。

run サブコマンド

run [ Arguments ] [ <File ] [ >File ] [ > >File ] [ 2>File ] [ 2> >File ] [ >&File ] [ > >&File ]

run サブコマンドは、オブジェクト・ファイルを開始します。Arguments は、コマンド・ラインの引数として渡されます。

フラグ

項目 説明
<File 入力が File から受け取られるように、入力をリダイレクトします。
>File 出力を File にリダイレクトします。
2>File 標準エラーを File にリダイレクトします。
> >File リダイレクトされた出力を File に追加します。
2> >File リダイレクトされた標準エラーを File に追加します。
>&File 出力および標準エラーを File にリダイレクトします。
> >&File 出力および標準エラーを File に追加します。

引数 blue12 を指定してアプリケーションを実行するには、 次のように入力します。

run blue 12

rerun サブコマンドを参照してください。

screen サブコマンド

screen

screen サブコマンドは、 dbx コマンドとの対話用に X Window をオープンします。 プロセスを開始したウィンドウでの操作を引き続き行うことができます。

screen サブコマンドは、 dbx デバッグ・プログラムが X Window System 環境で動作している間に実行する必要があります。 screen サブコマンドを X Window 対応でない環境で実行すると、dbx プログラムにより警告メッセージが表示され、screen サブコマンドを実行しなかった場合と同様にデバッグ処理が再開されます。screen サブコマンドは、以下の状況でも成功しないことがあります。

  • dbx プログラムが、 X Window System 環境で動作していない場合。
  • X Window System は動作しているが、 dbx のグローバル $xdisplay 変数が、 有効な表示名に設定されていない場合。$xdisplay 変数は、DISPLAY 環境変数に初期化されます。 dbx サブコマンドの set Name=Expression は、ディスプレイ名の値を変更します。
  • X Window System は動作していても、TERM 環境変数が、新しいウィンドウを開始するのに有効なコマンド名に設定されていない場合。
  • /tmp ディレクトリーが、 プログラムに対して読み取りまたは書き込みアクセスを許可しない場合。dbx プログラムは、screen コマンドの実行時にこのディレクトリー内に小さなスペースを必要とします。
  • システムのリソース不足のため、 新しい X Window に対応できない場合。

dbx プログラムは、障害のタイプを識別しませんが、 次のメッセージを送信します。

Warning: dbx subcommand screen fails. dbx 
continues.

$xdisplay がリモート・ディスプレイに設定されていると、 新しく作成した X Window が表示されないことがあります。 $xdisplay が正しく設定されていないと、 X Window System または他のシステム・リソースにより問題点が報告されます。

新しく作成したウィンドウのユーザー定義設定は、 .Xdefaults ファイル内でアプリケーション名 dbx_term を付けて定義することができます。

dbx コマンドによる対話のために X Window をオープンするには、 次のように入力します。

screen

set サブコマンド

set [ Variable=Expression ]

set サブコマンドは、dbx デバッグ・プログラムの変数値を定義します。 この値は Expression パラメーターにより指定され、プログラム変数は Variable パラメーターにより指定されます。 変数の名前は、デバッグ中のプログラムに含まれる名前と競合してはなりません。変数は、 他のコマンドに含まれる対応する式に展開されます。引数を指定せずに set サブコマンドを使用すると、 現在設定されている変数が表示されます。

変数 説明
$catchbp 次のコマンドの実行中にブレークポイントをキャッチします。
$codepage プログラム内での文字の解釈に使用するコード・セットを指定します。有効なコード・ページを使用して指定すると、すべての文字が指定のコード・セットから読み取られ、現在の環境で使用されているコード・セットに変換されます。
$compact_bt_ident スタック・トレースに出力できる ID 名の文字数の限度を指定します。指定される限度は、4 から 128 までの範囲の正整数であることが必要です。この変数が、限度となる値を指定せずに設定された場合、出力できるデフォルトの文字数は 8 文字です。

この変数が設定され、ID 名が指定された限度より 4 文字以上長かった場合、dbx コマンドはスタック・トレースに元の ID 名のうちの指定された文字数を出力し、その直後に 3 つのピリオド (...) を続けます。

例えば、ID 名が variable_example (長さが 16 文字) で、指定された限度が 7 の場合、ID 名は variabl... として出力されます。ただし、ID 名が variable_1 (長さが 10 文字) で、指定された限度が 7 の場合、dbx コマンドは、ID 名を 7 文字とそれに続く 3 つのピリオドに短縮しません。この ID 名は、variable_1 として出力されます。

$compact_bt_string スタック・トレースに出力できる関数引数ストリングの文字数の限度を指定します。 指定される限度は、4 から 128 までの範囲の正整数であることが必要です。 この変数が、限度となる値を指定せずに設定された場合、出力できるデフォルトの文字数は 8 文字です。

この変数が設定され、ストリングが指定された限度より 4 文字以上長かった場合、dbx コマンドはスタック・トレースに元のストリングのうちの指定された文字数を出力し、その直後に 3 つのピリオド (...) を続けます。

例えば、ストリングが string_example (長さが 14 文字) で、指定された限度が 5 の場合、ストリングは strin... として出力されます。 ただし、ストリングが 8 文字の長さの string_1 で、指定された限度が 5 の場合、dbx コマンドは、このストリングを 5 文字とそれに続く 3 つのピリオドに短縮しません。 このストリングは、string_1 として出力されます。

$deferevents 据え置きイベント機能をオンにします。
$display_address_name メンバーの変数 ID、および dbx コマンドを使用する一連のメモリー・アドレスを検査する際にその ID が占有するメモリー・アドレスを表示します。
$expandunions 可変レコードまたは共用体の各部分の値を表示します。
$frame スタック・トレースを実行し、ローカル変数にアクセスするために、 $frame の値により指定されたアドレスが指し示すスタック・フレームを使用します。
$hexchars 文字を 16 進数値で表示します。
$hexin アドレスを 16 進数で解釈します。
$hexints 整数を 16 進数で表示します。
$hexstrings 文字ポインターを 16 進数で表示します。
$hold_next contnextnexti、および step の各サブコマンド実行中に、 実行中のスレッドを除くすべてのスレッドを保留します。 この変数を設定すると、実行中のスレッドがブロック化されているスレッドの 1 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。
$ignoreifhandler ユーザーのプログラムが、登録済みハンドラーを持つシグナルを受信したときに、停止しません。
$ignoreload ユーザーのプログラムが loadunload、または loadbind サブルーチンを実行したときに、停止しません。
$ignorenonbptrap ユーザーのプログラムが、非ブレークポイント・トラップ命令を検出し、登録済み SIGTRAP ハンドラーを持っているときに、停止しません。
$instructionset デフォルトの逆アセンブリー・モードを指定変更します。 次のリストに、Expression パラメーターに使用できる値を示します。
"default"
dbx プログラムが実行されているアーキテクチャーを指定します。
"com"
PowerPCPOWER family の各アーキテクチャーの共通論理積モードの命令セットを指定します。dbx プログラムのデフォルトは、POWER プロセッサー・ベース・ニーモニックです。
"pwr"
POWER family アーキテクチャーの命令セットおよびニーモニックを指定します。
"pwrx"
AIX® 5.1 および それ以前のバージョンについて、POWER family アーキテクチャーの POWER2 インプリメンテーション用の命令セットおよびニーモニッ クを指定します。
"pwr6"
PowerPC アーキテクチャーの POWER6® インプリメンテーション用の命令セットおよびニーモニックを指定します。
"pwr7"
PowerPC アーキテクチャーの POWER7® インプリメンテーション用の命令セットおよびニーモニックを指定します。
"pwr8"
PowerPC アーキテクチャーの POWER8® インプリメンテーション用の命令セットおよびニーモニックを指定します。
"pwr9"
PowerPC アーキテクチャーの POWER9™ 実装用の命令セットおよびニーモニックを指定します。
"601"
AIX 5.1 および それ以前のバージョンについて、PowerPC 601 RISC マイクロプロセッサー用の 命令セットおよびニーモニックを指定します。
"603"
AIX 5.1 および それ以前のバージョンについて、PowerPC 603 RISC マイクロプロセッサー用の 命令セットおよびニーモニックを指定します。
"604"
PowerPC 604 RISC マイクロプロセッサーの命令セットおよびニーモニックを指定します。
"970"
PowerPC 970 マイクロプロセッサーの命令セットおよびニーモニックを指定します。
"ppc"
オプションの命令を除く、POWER プロセッサー・ベース・アーキテクチャーに定義された命令セットおよびニーモニックを指定します。 これらの命令は、AIX 5.1 および それ以前のバージョンで、PowerPC 601 RISC マイクロプロセッサー以外のすべての POWER プロセッサー・ベースのインプリメンテーションで使用できます。
"any"
有効な POWER プロセッサー・ベース命令または POWER family命令を指定します。 オーバーラップする命令セットの場合、 デフォルトは POWER プロセッサー・ベース・ニーモニックとなります。

Expression パラメーターに値を指定しないと、 dbx プログラムはデフォルトの逆アセンブリー・モードを使用します。

$java 設定すると、以下の変数も設定されて、dbx コマンドが Java アプリケーションをデバッグするモードになります。 設定解除すると、以下の変数も設定解除されます。
$ignorenonbptrap
Java Just-In-Time (JIT) コンパイラーで生成されたトラップ命令の通知を抑止します。
$listwindow パラメーターを指定しないで list サブコマンドを使用したときに、 関数の前後をリストする際の行数およびリストの行数を指定します。デフォルトは 10 行です。
$mapaddrs マッピング・アドレスを開始します。$mapaddrs を設定解除すると、 アドレスのマッピングが停止します。
$mapformat map サブコマンドのためのデフォルトの出力モードを指定します。
"abbr"
省略出力モードを指定します。この場合、ロードされた各モジュールは 1 行で構成され、 そのモジュールのエントリー番号、 モジュール名、オプションとしてメンバー名を含みます。
"normal"
通常出力モードを指定します。この情報には、ロードされた各モジュールについて、 エントリー番号、モジュール名、メンバー名、テキストの始まり、 テキスト長、データの始まり、データ長、およびファイル・ディスクリプターが含まれます。 ロードされたモジュールに TLS データがある場合、TLS データの始まり、および TLS データ長も表示されます。
"raw"
ロウ出力モードを指定します。この場合、出力は、ロードされた各モジュールについて 不定形式の 1 行で構成され、その中には、エントリー番号、 モジュール名とオプションのメンバー名、テキストの始まり、 テキストの終わり、テキスト長、データの始まり、データの終わり、データ長、 およびファイル・ディスクリプターが、スペースで分離されたフィールドとして含まれます。 ロードされたモジュールに TLS データがある場合、TLS データの始まり、TLS データの終わり、および TLS データ長も表示されます。
"verbose"
詳細出力を指定します。この情報には、ロードされた各モジュールについて、 エントリー番号、モジュール名、メンバー名、テキストの始まり、テキストの終わり、 テキスト長、データの始まり、データの終わり、 データ長、およびファイル・ディスクリプターが含まれます。 ロードされたモジュールに TLS データがある場合、TLS データの始まり、TLS データの終わり、および TLS データ長も表示されます。
Expression パラメーターに値を指定しないと、 dbx プログラムは通常出力モードを使用します。
$mnemonics 逆アセンブル時に dbx プログラムにより使用されるニーモニックのセットを変更します。
"default"
指定された命令セットに最も近いニーモニックを指定します。
"pwr"
POWER family アーキテクチャー用のニーモニックを指定します。
"ppc"
オプションの命令を除く、POWER プロセッサー・ベース・アーキテクチャー・ブックに定義されたニーモニックを指定します。

Expression パラメーターに値を指定しないと、 dbx プログラムは指定した命令セットに最も近いニーモニックを指定します。

$noargs whereupdown、および dump などのサブコマンドから引数を省略します。
$noflregs registers サブコマンドから浮動小数点レジスターの表示を省略します。
$novregs registers サブコマンドからベクトル・レジスターの表示を省略します。
$novsregs registers サブコマンドからベクトル・スカラー・レジスターの表示を省略します。
$octint アドレスを 8 進数で解釈します。
$octints 整数を 8 進数で表示します。
$pretty C および C++ の複合データ構造 (strut、union、array) の値を、print サブコマンドを使用して、pretty プリント 形式で表示します。
"on"
pretty プリントを、1 行ごとに値を持ち、 それぞれの値の静的有効範囲を字下げで表すように指定します。
"verbose"
pretty プリントを、1 行ごとに値を持ち、 それぞれの値の静的有効範囲を修飾名で表すように指定します。 修飾名は、その値が関連付けられている外部ブロックのリストをドットで区切ったものです。
"off"
pretty プリントをオフに指定します。この値はデフォルトです。
$print_dynamic print/dump コマンドを使用して動的タイプの C++ オブジェクトを表示します。デフォルトでは、この変数は設定されていません。
$repeat コマンドが入力されなかった場合に、前に入力されたコマンドを反復します。
$sigblock ユーザーのプログラムへのシグナルをブロック化します。
$show_vft 仮想関数テーブルを表示し、同時に print/dump コマンドを使用して C++ オブジェクトを印刷します。デフォルトでは、これは設定されていません。
$stack_details where サブコマンドによって表示される各アクティブ関数またはプロシージャーのフレーム番号およびレジスター・セットを表示します。
$stepignore デバッグ情報が使用できない別のルーチンを呼び出すソース行で step/tstep サブコマンドを実行するときの dbx コマンドの動作方法を制御します。 この変数を使用すると、step /tstep サブコマンドは、デバッグ情報が使用できない大規模なルーチンをステップオーバーすることができます。 次のリストに、Expression パラメーターに使用できる値を示します。
"function"
dbx コマンドの next /tnext サブコマンドの関数を実行します。 この値はデフォルト値です。
"module"
デバッグ情報が使用できないロード・モジュール (システム・ライブラリーなど) に next/tnext サブコマンドの関数がある場合は、その関数を実行します。
"none"
ソース情報が使用できる命令に達するまで、dbx コマンドの stepi/tstepi サブコマンドの関数をバックグラウンドで実行します。 ソース情報が使用できる命令に達すると、dbx は実行を停止した位置を表示します。
$trace_good_transaction dbx コマンドに、トランザクション・メモリー (TM) のトランザクションが正常に完了するたびに次のメッセージを表示するよう指示します。
Process {PID} may have performed a transaction - $texasr, $tfiar, $tfhar 
are valid and may be inspected

この変数はデフォルトでは使用不可になっているので、トランザクションが成功しても報告されません。

$thcomp $thcomp が設定されているとき、 thread サブコマンド th- が表示する情報は圧縮フォーマットで表示されます。
$unsafeassign assign ステートメントの指定範囲内の精密タイプ検査をオフにします。 $unsafeassign 変数が設定されている場合でも、 assign ステートメントの指定範囲内に異なるサイズのストレージ・タイプは設定されません。
$unsafebounds 配列の添え字検査をオフにします。
$unsafecall サブルーチンまたは関数呼び出しに渡される引数に対する精密な型チェックをオフにします。
$unsafegoto goto サブコマンドの宛先検査をオフにします。
$vardim バウンダリーが不明である配列を表示するときに使用するサイズを指定します。 デフォルト値は 10 です。
$xdisplay multproc サブコマンドまたは screen サブコマンドで使用する X Window System のディスプレイ名を指定します。デフォルト値は、シェルの DISPLAY 変数の値です。

$unsafe 変数を指定すると、 dbx デバッグ・プログラムのエラー検出の有用性が制限されます。

  1. 表示する行数のデフォルト値を 20 に変更するには、 次のように入力します。
    set $listwindow=20
  2. assign サブコマンドの型チェックを使用不可にするには、 次のように入力します。
    set $unsafeassign
  3. POWER7 プロセッサーのマシン・インストラクションを逆アセンブルするには、次のように入力します。
    set $instructionset="pwr7"
  4. IBM-eucCN コード・セットでエンコードされた文字列を表示するには、次のように入力します。
    set $codepage="IBM-eucCN"
  5. スタック・トレースに表示される ID に 4 文字の限度、ストリングに 12 文字の限度を指定するには、次のコマンドを入力します。
    set $compact_bt_ident=6
    set $compact_bt_string=12
    long_identifierlong_variable_name_strrecursive_fun などの ID、および this_is_a_really_long_string などのストリングを使用するスタック・トレースは、次の出力のようになります。
    long_i...(a = 11, long_v... = "this_is_a_re..."), line 3 in "example.c"
    recurs...(), line 13 in "example.c"

unset サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ特殊なデバッグ・プログラム変数による印刷出力の変更』も参照してください。

set edit [vi, emacs] または set -o [vi, emacs] サブコマンド

set サブコマンドと -o または edit オプションを一緒に使用して、 行編集モードの 1 つをオンにすることができます。 set-o vi または set edit vi コマンドを指定すると、 vi 行エディターの入力モードに入ります。 set -o emacs または set edit emacs コマンドを指定すると、 emacs 行エディターの入力モードに入ります。

  1. vi 行エディターをオンにするには、次のように入力します。
    set-o vi

    または

    set edit vi

sh サブコマンド

sh [ Command ]

sh サブコマンドは、 Command パラメーターにより指定されたコマンドをシェルに渡して実行します。 SHELL 環境変数は、使用するシェルを決定します。 デフォルトは sh シェルです。引数を指定しないと、シェルに制御が渡されます。

  1. ls コマンドを実行するには、 次のように入力します。
    sh ls
  2. シェルにエスケープするには、次のように入力します。
    sh
  3. SHELL 環境変数を使用するには、 次のように入力します。
    sh echo $SHELL

dbx からのシェル・コマンドの実行 プログラミングの一般概念: プログラムの作成およびデバッグ』のセクションを参照してください。

skip サブコマンド

skip [ Number ]

skip サブコマンドは、現在の停止位置からアプリケーション・プログラムの実行を 継続します。Number パラメーターの値に等しいブレークポイントの数がスキップされ、 次のブレークポイントに達したとき、またはプログラムが終了したときに実行が 停止します。Number パラメーターを指定しないと、デフォルト値の 1 が採用されます。

2 番目のブレークポイントを検出するまで実行を継続するには、 次のように入力します。

skip 1

cont サブコマンドのセクションを参照してください。

source サブコマンド

source File

source サブコマンドは、File パラメーターにより 指定されたファイルから dbx サブコマンドを読み取ります。

cmdfile ファイルの dbx サブコマンドを読み取るには、 次のように入力します。

source cmdfile

ファイルからの dbx サブコマンドの読み取り プログラミングの一般概念: プログラムの作成およびデバッグ』のセクションを参照してください。

status サブコマンド

status [ more ] [ >File ]

status サブコマンドは、残ったスレッド tskip カウント (tskip サブコマンドを使用して設定されたもの) のほかに、すべてのユーザー定義のブレークポイント、トレース・ポイント、および監視ポイントを表示します。 さらにパラメーターが指定されている場合は、status サブコマンドは、ブレークポイント、トレース・ポイント、および監視ポイントに関連した dbx サブコマンドも表示します。 status サブコマンドでは、使用可能イベントはイベント番号を大括弧 ([]) で囲んで、使用不可イベントはイベント番号をピリオド (..) で囲んで、また据え置きイベントはイベント番号を不等号括弧 (<>) で囲んでリストされます。

> フラグは、status サブコマンドの出力を File パラメーターで指定されたファイルに送ります。

フラグ

項目 説明
>File 出力を File にリダイレクトします。

  1. すべてのユーザー定義のブレークポイント、トレース・ポイント、監視ポイント、ならびに残りのスレッド tskip カウントを表示するには、次のように入力します。
    status
    出力は以下のようになります。
    [1] stop at 13
    [2] stop at 14
    .3. stop at 15
    .4. stop at 16
    [5] stop at 17 ( count = 0, limit = 3 )
    <6> stop at 18 if g > 10
    <7> stop in func
    
    Remaining tskip counts:
    tskip 2 for $t1
    tskip 1 for $t5
    上記の出力例では、イベント 3 と 4 が使用不可であり、イベント 6 と 7 が据え置きです。
  2. すべてのユーザー定義のブレークポイント、トレース・ポイント、および監視ポイントを、関連した dbx サブコマンドと共に表示するには、次のように入力します。
    status more
    出力は以下のようになります。
           [1] stop at 13
               [1] where 
           .2. stop at 14
               [1] where
               [2] registers        
           <3> stop at 15 if g > 10
               [1] where; registers

dbx コマンドの addcmd サブコマンド、 clear サブコマンド、 delete サブコマンド、 delcmd サブコマンド、 tskip サブコマンド、 stop サブコマンド、および trace サブコマンドを参照してください。

また、 プログラミングの一般概念: プログラムの作成およびデバッグブレークポイントの設定および削除』も参照してください。

step サブコマンド

step [ Number ]

step サブコマンドは、 アプリケーション・プログラムのソース行を実行します。 実行する行数は、Number パラメーターで 指定します。Number パラメーターを指定しないと、デフォルト値の 1 が採用されます。

マルチスレッド・アプリケーション・プログラムで step サブコマンドを使用すると、操作中にすべてのユーザー・スレッドが実行されますが、プログラムは実行中のスレッドが指定のソース行に達するまで実行を継続します。 実行中のスレッドのみを進行させる場合は、 set サブコマンドを使用して変数 $hold_next を設定します。 この変数を設定すると、実行中のスレッドがブロック化されているスレッドの 1 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。

注: step サブコマンドの動作を制御するには、set サブコマンドの $stepignore 変数を使用します。 $stepignore 変数を使用すると、 step サブコマンドはデバッグ情報が使用できない大規模なルーチンへステップオーバーすることができます。

  1. ソース行の実行を 1 行継続するには、次のように入力します。
    step
  2. ソース行の実行を 5 行継続するには、次のように入力します。
    step 5
  3. dbx プログラムが次のサンプル・コードに示すような printf 関数に単一ステップで進まないようにするには、
    60 printf ("hello world ¥n");

    次のように入力します。

    set $stepignore="function"; step

cont サブコマンド、 goto サブコマンド、 next サブコマンド、 set サブコマンド、 stepi サブコマンドを参照してください。

stepi サブコマンド

stepi [ Number ]

stepi サブコマンドは、 アプリケーション・プログラムの命令を実行します。 実行する命令の数は、Number パラメーターで指定します。Number パラメーターを省略すると、 デフォルト値の 1 が採用されます。

stepi サブコマンドをマルチスレッド・アプリケーション・プログラムで使用すると、実行中のスレッドのみを進行させます。他のすべてのユーザー・スレッドは停止されたままです。

  1. マシン・インストラクションの実行を 1 つ継続するには、次のように入力します。
    stepi 
  2. マシン・インストラクションの実行を 5 つ継続するには、次のように入力します。
    stepi 5

gotoi サブコマンド、 nexti サブコマンド、 step サブコマンドを参照してください。

stop サブコマンド

stop { [Variable ] [ at SourceLine | in Procedure | on load ["ModuleName"] ] [ if Condition ]} [ "{ "Limit" }" ]

stop サブコマンドは、一定の条件が満たされると、 アプリケーション・プログラムの実行を停止します。アプリケーション・プログラムが停止するのは、 以下のような場合です。

  • if Condition フラグを 使用しているときに、Condition が真である場合。
  • in Procedure フラグを 使用しているときに、Procedure が呼び出された場合。
  • Variable パラメーターを 指定しているときに、Variable が変更された場合。
  • at SourceLine フラグを 使用しているときに、SourceLine 行番号に達した場合。

    SourceLine 変数は、整数として、 または : (コロン) および整数が後ろに続くファイル名文字列として指定できます。

  • on load フラグが使用され、ModuleName パラメーターが指定されて いるときに、その ModuleName ロード・モジュールがロードまたはアンロードされる場合。
    オプションの ModuleName 変数を使用すると、 単一のモジュール名を、または、以下のフォーマットでモジュール名とメンバー名のペアを以下のように 指定することができます。
    ModuleName(MemberName)
  • on load フラグが使用 され、ModuleName パラメーターが指定されて いないときに、いずれかのロード・モジュールがロードまたはアンロードされる場合。

指定された回数だけ条件を無視するように dbx コマンドに指示する場合は、Limit パラメーターを設定できます。すなわち、Limit パラメーターは、デバッグ・プログラムの実行を停止する前に、指定された条件を満たす必要がある回数を指定します。

これらのコマンドの実行後、dbx デバッグ・プログラムは、コマンドの結果として作成したイベントを報告するメッセージを表示します。 このメッセージには、コマンドの解釈と共にブレークポイントに関連付けられているイベント ID が含まれます。 解釈の構文は、コマンドと一致していない場合があります。 例えば次のとおりです。

stop in main
[1] stop in main
stop at 19 if x == 3
[2] stop at "hello.c":19 if x = 3
stop in func
<3> stop in func
stop g 
<4> stop g
stop in getdata {3} 
[5] stop in getdata ( count = 0, limit = 3 ) 

大括弧 ([]) 内の番号は、ブレークポイントに関連付けられているイベント ID です。dbx デバッグ・プログラムは、イベント番号を各 stop サブコマンドと関連付けます。 プログラムが 1 つのイベントの結果として停止させられると、どのイベントがプログラムを停止させたかを示すために、イベント ID が現在行と一緒に表示されます。 不等号括弧 (<>) 内の番号は、据え置きイベントのイベント ID です。据え置きイベントとは、ブレークポイント、トレース・ポイント、または監視ポイントが関連付けられておらず、現在メモリーにロードされていないシンボルが入力コマンドに含まれていると必ず生成されるイベントです。 大括弧 ([]) 内に表示される通常のイベントも、対応するモジュールがアンロードされると必ず据え置きイベントに変換されます。 据え置きイベントに対応するモジュールがメモリーにロードされると、据え置きイベントは通常のイベントに変換され、対応するブレークポイント、トレース・ポイント、または監視ポイントが作成されます。 ユーザーが作成するイベントは、dbx コマンドにより作成された内部イベントと共存するため、イベント番号が常に連番になっているとは限りません。

イベントの作成後に制限をイベントと関連付けるには、limitbp サブコマンドを使用します。 イベントと関連付けられた制限を表示するには、printbp サブコマンドを使用できます。

これらの番号を表示する場合は、status サブコマンドを使用します。 出力を status から任意のファイルにリダイレクトすることができます。 stop サブコマンドをオフにするには、delete または clear サブコマンドを使用します。あるいは、enable または disable サブコマンドを使用します。 指定されたイベント番号に dbx サブコマンドを追加するには addcmd サブコマンドを使用し、指定されたイベント番号から関連した dbx サブコマンドを削除するには delcmd サブコマンドを使用します。

マルチスレッド・アプリケーション・プログラムでは、ユーザー・スレッドが 1 つでもブレークポイントに達すると、すべてのユーザー・スレッドが一時停止されます。 例 9 に示すような条件を指定した場合を除き、ソース行または関数を実行するユーザー・スレッドは、そのソース行または関数に設定されたブレークポイントにヒットします。以下の別名は、自動的に条件を指定します。

  • bfth (Function, ThreadNumber)
  • blth (SourceLine, ThreadNumber)

ThreadNumber は、thread サブコマンドで表示される、 シンボル・スレッド名の番号部分です (例えば、5 はスレッド名 $t5 の ThreadNumber です)。これらの別名は、実際には以下の例のように展開されるサブコマンドを生成するマクロです。

stopi at &Function if ($running_thread == ThreadNumber)
stop at SourceLine if ($running_thread == ThreadNumber)

フラグ

項目 説明
at SourceLine 行番号を指定します。
if Condition 条件 (例えば、真) を指定します。
in Procedure 呼び出されるプロシージャーを指定します。
on load ModuleName ロード・モジュールをモニターすることを指定します。

  1. main プロシージャーの、 最初のステートメントで実行を停止するには、次のように入力します。
    stop in main
  2. 変数 x の値が、 実行を開始してから 12 行目で変更された場合に実行を停止するには、 次のように入力します。
    stop x at 12
  3. ファイル sample.c の、 5 行目で実行を停止するには、次のように入力します。
    stop at "sample.c":5
  4. dbx コマンドが、 func1 内のサブルーチンを実行するたびに、 x の値を調べるには、次のように入力します。
    stop in func1 if x = 22
  5. dbx コマンドが、 func1 の実行を開始するたびに、 x の値を調べるには、次のように入力します。
    stopi at &func1 if x = 22
  6. Variable の値が変わったときに、 プログラムを停止させるには、次のように入力します。
    stop Variable
  7. Condition が真であると評価されたときに、 常にプログラムを停止させるには、次のように入力します。
    stop if (x > y) and (x < 2000)
  8. 次の例では、 アクティブ・イベントの表示方法および除去方法を示しています。
    status
    [1] stop in main
    [2] stop at "hello.c":19 if x = 3
    delete 1
    status
    [2] stop at "hello.c":19 if x = 3
    clear 19
    status
    (dbx)
    delete コマンドは、イベント ID によりイベントを削除します。 clear コマンドは、行番号に基づいてブレークポイントを削除します。
  9. スレッド $t5 で実行されるときにだけ、 func1 の先頭にブレークポイントを配置するには、 以下の等価のコマンドのどちらかを入力します。
    stopi at &func1 if ($running_thread == 5)
    または
    bfth(func1, 5)
  10. いずれかのモジュールがロードまたはアンロードされたときにプログラムを停止するには、 次のように入力します。
    stop on load
  11. モジュール Module がロードまたはアンロードされるときにプログラムを停止するには、 次のように入力します。
    stop on load "Module"
  12. モジュール Module のメンバー Member がロードまたはアンロードされるときにプログラムを停止するには、 次のように入力します。
    stop on load "Module(Member)"
  13. 関数 getdata 内のプログラムが 3 回目に呼び出されたときにこれを停止するには、次のように入力します。
    stop in getdata {3}

addcmd サブコマンド、clear サブコマンド、delete サブコマンド、delcmd サブコマンド、disable サブコマンド、enable サブコマンド、limitbp サブコマンド、printbp サブコマンド、status サブコマンド、stopi サブコマンド、および trace サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグブレークポイントの設定および削除』も参照してください。

stophwp サブコマンド

stophwp Address Size

stophwp サブコマンドは、ハードウェアの監視ポイントの停止を 指定されたメモリー領域に設定します。プログラムは、その領域の内容が変化したときに 停止します。
注:
  1. stophwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
  2. 単一の監視ポイントのみ設定できるというハードウェアの制限により、 stophwp および tracehwp で別のハードウェア監視ポイント・イベントを作成しようとすると、 アクティブな監視ポイント・イベントは矛盾するものとして動作することになります。そのため、新しいイベントを 作成する前に、前のイベントは削除する必要があります。また、アクティブなソフトウェアの監視ポイント の存在 (stop および trace サブコマンドの呼び出しにより 作成された) はハードウェアの監視ポイントのパフォーマンス向上を打ち消すため、 これらのタイプのイベントも矛盾するものとして動作するので、 ハードウェアの監視ポイントを作成する前に削除する必要があります。

  1. アドレス 0x200004e8 で始まる 4 バイト・メモリー領域の内容が変化するときにプログラムを停止するには、次のように入力します。
    stophwp 0x200004e8 4

tracehwp サブコマンドを参照してください。

stopi サブコマンド

stopi { [Address] [ at Address | in Procedure ] [ if Condition ]}

stopi サブコマンドは、指定した位置に停止を設定します。

  • if Condition フラグを指定している場合、 条件に真を指定するとプログラムは停止します。
  • Address パラメーターを指定している場合、 Address の内容が変更されるとプログラムは停止します。
  • at Address フラグを指定している場合、 指定したアドレスに停止が設定されます。
  • in Procedure フラグを指定している場合、 Procedure が呼び出されるとプログラムは停止します。

フラグ

項目 説明
if Condition 条件 (例えば、真) を指定します。
in Procedure 呼び出されるプロシージャーを指定します。
at Address マシン・インストラクションのアドレスを指定します。

  1. アドレス 0x100020f0 で実行を停止するには、 次のように入力します。
    stopi at 0x100020f0
  2. アドレス 0x100020f0 の内容が変更されたときに、 実行を停止するには、次のように入力します。
    stopi 0x100020f0
  3. アドレス 0x100020f0 の内容が、 スレッド $t1 により変更されたときに実行を停止するには、 次のように入力します。
    stopi 0x200020f0 if ($running_thread == 1)

stop サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグdbx によるマシン・レベルのデバッグ』も参照してください。

thdata サブコマンド

thdata [ $tthreadnumber [ all | key1 … ] … ] | [ all ]

thdata サブコマンドは、pthread_key_create() 関数を使用して作成された各種キーに関連するスレッド固有データを印刷します。 thdata サブコマンドは、次のように使用できます。
コマンド アクション
thdata [ all ] すべての使用可能なスレッドのキーすべてに関連するスレッド固有データを印刷します。
thdata $t1 [ all ] $t1 スレッドのすべてのキーに関連付けられたスレッド固有データを印刷します。
thdata $t1 key1 key2 $t1 スレッドのキー key1 および key2 に関連付けられたスレッド固有データを印刷します。
thdata $t1 key1 key2 $t2 key1 $t1 スレッドのキー key1 および key2 に関連付けられたスレッド固有データ、 および $t2 スレッドのキー key1 に関連付けられたスレッド固有データを印刷します。

  1. 現行スレッドに対してすべての使用可能なキーに関連付けられたデータを 印刷するには、次のように入力します。
    (dbx) thdata $t1
    Thread  :  1
    	Key : 1 Data pointer : 0x200f7a28
    	Key : 2  Data pointer : 0x200f7aa8
    	Key : 3 Data pointer : 0x200f7ac4
    (dbx) 
  2. 複数のスレッドと複数のキーに対して、関連付けられたデータを 印刷するには、次のように入力します。
    (dbx) thdata $t1 2 3 $t2
    Thread  :  1
    	Key : 2  Data pointer : 0x200f7aa8
    	Key : 3 Data pointer : 0x200f7ac4
    Thread : 2
    	Key : 2  Data pointer : 0x200f7b24
    	Key : 3 Data pointer : 0x200f7ba4
    (dbx)

「プログラミングの一般概念: プログラムの作成およびデバッグ」の『スレッド固有データ』を 参照してください。

thread サブコマンド

選択したスレッドを表示する

thread { [ info ] [ - ] [ ThreadNumber ... ] } | current | run | susp | term | wait

個別のスレッドを選択する

thread current [ - ] ThreadNumber

スレッドを保留または解放する

thread { hold | unhold } [ - ] [ ThreadNumber ... ]

表示されたオプションのヘルプを表示する

thread { help}

thread サブコマンドは、ユーザー・スレッドを表示および制御します。

thread サブコマンドの最初のフォーマットは、2 つのフォーマットで情報を表示することができます。 thread サブコマンドが th ならば、表示される情報は最初のフォーマットになります。 thread サブコマンドが th - ならば、表示される情報は 2 番目のフォーマットになります。 パラメーターを指定しないと、すべてのユーザー・スレッドに関する情報が表示されます。 1 つ以上の ThreadNumber を指定すると、それに対応するユーザー・スレッドの情報が表示されます。 thread サブコマンドがスレッドを表示するとき、 現行のスレッド行の前に > が置かれます。 実行中のスレッドが現行スレッドと同じでない場合は、そのスレッド行の前には * が表示されます。 thread サブコマンドによって両方のフォーマットで表示される情報を、以下に説明します。

最初のフォーマットで thread サブコマンドによって表示される情報を、 次に示します。

項目 説明
thread ユーザー・スレッドのシンボル名を $tThreadNumber フォーマットで示します。
state-k カーネル・スレッドの状態を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。 この値は、それぞれ実行中、待機中、延期、終了を示す runwaitsuspterm のいずれかです。
wchan カーネル・スレッドが待機中またはスリープ中のイベントを示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。
state-u ユーザー・スレッドの状態を示します。 可能な状態は、runningblockedterminated のいずれかです。
k-tid カーネル・スレッドの ID を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。
mode ユーザー・スレッドが停止されるモード (カーネルまたはユーザー) を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。
held ユーザー・スレッドが保留されているかどうかを示します。
scope ユーザー・スレッドの競合範囲を示します。これは、システムまたはプロセスの 競合範囲についてそれぞれ sys または pro のいずれかを指定できます。
function ユーザー・スレッド関数の名前を示します。

2 番目のフォーマットで thread サブコマンドによって表示される情報を、以下に示します。 デフォルトでは、thread サブコマンド th - の場合、 情報は長形式で表示されます。

項目 説明
thread ユーザー・スレッドのシンボル名を $tThreadNumber フォーマットで示します。

カーネル・スレッド関連の情報

項目 説明
tid ユーザー・スレッド ID を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。
pri カーネル・スレッドの優先順位を示します。
sched カーネル・スレッドのスケジューリング・ポリシーを示します。 この値には、fif、oth、rr、for fifo、その他 (other)、またはラウンドロビン (round robin) スケジューリング・ポリシーがあります。
state カーネル・スレッドの状態を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。 この値には、実行中、待機中、延期中、またはゾンビを示す、run、wait、susp、または zomb があります。

ユーザー・スレッド関連の情報

項目 説明
tid ユーザー・スレッド ID を示します。
pri userl スレッドの優先順位を示します。
sched ユーザー・スレッドのスケジューリング・ポリシーを示します。 この値には、fif、oth、rr、for fifo、その他 (other)、またはラウンドロビン (round robin) スケジューリング・ポリシーがあります。
state ユーザー・スレッドの状態を示します。 この値には、実行中、作成中、延期、ブロック済み、実行可能、または終了の状態があります。
state ユーザーの状態を 16 進数で示します。
flags pthread フラグの値を 16 進数で示します。
wchan カーネル・スレッドが待機中またはスリープ中のイベントを示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。
mode ユーザー・スレッドが停止されるモード (カーネルまたはユーザー) を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。
held ユーザー・スレッドが保留されているかどうかを示します。
scope ユーザー・スレッドの競合範囲を示します。この値は、システムまたはプロセスの競合範囲を表す sys または pro です。
cancelation
pending
取り消しが保留中であるかどうかを示します。
state
取り消しのモードおよび状態を示します。

取り消しが保留中でなく、かつ状態とモードがそれぞれ使用可と据え置きになっていると、 取り消しは ed で表され、取り消しの状態とモードが使用可と非同期になっていると、 ea で表され、モードが使用可でないと d で表されます。

取り消しが保留中で、かつ取り消しの状態とモードがそれぞれ使用可と据え置きになっていると、 取り消しは ED で表され、取り消しの状態とモードが使用可と非同期になっていると、 EA で表され、モードが使用可でない場合は D で表されます。

項目 説明
joinable スレッドが結合可能かどうかを示します。
boosted スレッドの格上げ値を示します。
function ユーザー・スレッド関数の名前を示します。
cursig 現行シグナル値を示します。

オプション・セット $thcomp が設定されると、情報は以下の例に示すように圧縮形式で表示されます。

m           mode           (k)ernel (u)ser
k           k-state        (r)unning (w)aiting (s)uspended (z)ombie
u           u-state        (r)unning (R)unnable (s)uspended (t)erminated

                           (b)locked (c)reating
h           held           (yes) (n)o
s           scope          (s)ystem (p)rocess
c           cancellation   not pending:  (e)nabled & (d)eferred,
                                         (e)nabled & (a)sync, (d)isabled
                           pending    :  (E)nabled & (D)eferred,
                                         (E)nabled & (A)sync, (D)isabled
j           joinable       (yes) (n)o
b           boosted        value of boosted field in pthread structure
plk         kernel thread  (oth)er  (fif)o  (rr)-> round-robin
            policy
plu         user thread    (oth)er  (fif)o  (rr)-> round-robin
            policy
prk         kernel thread  hex number
            policy
pru         user thread    hex number
            policy
k-tid                      kernel thread id in hex
u-tid                      pthread id in hex
fl                         value of flags field in pthread structure in hex
sta                        value of state field in pthread structure in hex
cs                         value of the current signal
wchan                      event for which thread is waiting
function                   function name           

現行スレッドを選択する場合は、thread サブコマンドの 2 番目のフォーマットが使用されます。 dbx デバッグ・プログラムの printregisters、 および where の各サブコマンドは、いずれも現行スレッドのコンテキストに沿って機能します。 現行スレッドがカーネル・モードになっている場合は、 registers サブコマンドはレジスターを表示できません。

thread サブコマンドの 3 番目のフォーマットは、 スレッドの実行の制御に使用します。スレッドは、hold フラグを使用して保留にするか、 unhold フラグを使用して解放することができます。 保留にされているスレッドは、解放されるまで再開されません。

注: dbx デバッグ・プログラムの print サブコマンドは、シンボルによるスレッド名を認識し、 対応するオブジェクトの状況を表示するために使用できます。

フラグ

項目 説明
現行 ThreadNumber パラメーターを指定しないと、現行スレッドが表示されます。 ThreadNumber パラメーターを指定すると、 指定したユーザー・スレッドが現行スレッドとして選択されます。
help th - コマンドを使用したとき表示されるスレッド・オプションに関する情報をすべて表示します。
hold ThreadNumber パラメーターを指定しないと、すべてのユーザー・スレッドが保留にされ、 表示されます。1 つ以上の ThreadNumber パラメーターを指定すると、 指定したユーザー・スレッドが保留にされ、表示されます。
unhold ThreadNumber パラメーターを指定しないと、 以前に保留にされたすべてのユーザー・スレッドが解放され、表示されます。 1 つ以上の ThreadNumber を指定すると、 指定したユーザー・スレッドが解放され、表示されます。
info ThreadNumber パラメーターを指定しないと、 すべてのユーザー・スレッドの長形式のリストが表示されます。 1 つ以上の ThreadNumber パラメーターを指定すると、 指定したユーザー・スレッドの長いフォーマットのリストが表示されます。

上記のフラグはすべて [-] オプションを取ります。このオプションを指定すると、 set $thcomp オプションが設定されない限り、 スレッド情報は 2 番目の形式と長形式で表示されます。

run run 状態のスレッドを表示します。
susp susp 状態のスレッドを表示します。
term term 状態のスレッドを表示します。
wait wait 状態のスレッドを表示します。

  1. 待機状態のスレッドに関する情報を表示するには、 次のように入力します。
    thread  wait
    出力は以下のようになります。
    thread  state-k   wchan state-u   k-tid mode held scope function 
     $t1     wait            running   17381   u   no   pro  main
     $t3     wait            running    8169   u   no   pro  iothread
  2. 複数の、任意のスレッドについて情報を表示するには、次のように入力します。
    thread 1 3 4
    出力は以下のようになります。
    thread  state-k   wchan state-u   k-tid mode held scope function
     $t1     wait           running   17381   u   no   pro  main
     $t3     wait           running    8169   u   no   pro  iothread
    >$t4     run            running    9669   u   no   pro  save_thr
  3. スレッド 4 を現行スレッドにするには、次のように入力します。
    thread  current 4
  4. スレッド番号 2 を保留にするには、次のように入力します。
    thread  hold 2
  5. 待機状態のスレッドについて情報を 2 番目のフォーマットで表示するには、次のように入力します。
    thread wait -

    出力は以下のようになります。

    thread m k u h s c  j b  kpl  upl  kpr upr k_tid   u_tid   fl  sta wchan  function
    *$t1   u r w n p ed y 0  oth  oth  61   1  0043e5  000001  51  004        main
     $t3   u r w n p ed y 0  oth  oth  61   1  001fe9  000102  51  004        iothread
    >$t4   u r r n p ed y 0  oth  oth  61   1  0025c5  000203  50  064        save_thr  
  6. 複数の、任意のスレッドについて情報を 2 番目のフォーマットで表示するには、次のように入力します。
    thread - 1 2 3

    出力は以下のようになります。

    thread m k u h s c  j b  kpl  upl  kpr upr k_tid   u_tid   fl  sta wchan function
    *$t1   u r w n p ed y 0  oth  oth  61   1  0043e5  000001  51  004       main
     $t3   u r w n p ed y 0  oth  oth  61   1  00fe9   000102  51  004       iothread
    >$t4   u r r n p ed y 0  oth  oth  61   1  0025c5  000203  50  064       save_thr

attribute サブコマンド、 condition サブコマンド、 mutex サブコマンド、 print サブコマンド、 registers サブコマンド、 where サブコマンドを参照してください。

また、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『スレッドの作成』も参照してください。

tls サブコマンド

tls map

tls サブコマンドは、ロードされた TLS モジュールごとに TLS 初期化テンプレートの始まりおよび長さを表示するために使用するフラグとして、フラグを 1 つだけ取ります。

tm_status サブコマンド

tm_status

tm_status サブコマンドは、$texasr 変数 (トランザクション例外およびサマリー・レジスター) の内容を表示し、トランザクション失敗の原因および種類を判別するためにその内容を解釈します。

$texasr 変数に格納された値を表示および解釈するには、次のコマンドを入力します。

(dbx) tm_status

以下の例のような出力が表示されます。

REGISTER : TEXASR = 0x100000018C000001
Bit(s)   |Field                     |Meaning
_________________________________________________________________________________
0-7      Failure Code                TM_SIG_DELIVERED | Failed due to signal delivery
7        Failure Persistent          Failure is transient
31       Abort                       Execution of TM instruction caused Abort
32       Suspended                   Failure while in Suspended State
34-35    Privilege                   During Failure process-thread privilege state was 0
36       Failure                     Summary Failure recording has been performed
37       TFIAR (in)exact             TFIAR is exact
38       Rollback Only Transaction   non-ROT tbegin. initiated
52-63    Transaction Level           1

tnext サブコマンド

tnext [Number]

tnext サブコマンドは、実行中のスレッドを次のソース行まで実行します。 Number パラメーターは、tnext サブコマンドの実行回数を指定します。 Number パラメーターを指定しない場合は、tnext は 1 回だけ実行されます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。

この操作時にすべてのスレッドが実行されます。 この操作時にブレークポイントをキャッチするには、$catchbp dbx 変数を設定します。 $catchbp 変数が設定されている場合、別のスレッドのブレークポイントに達すると、残りの回数については tnext サブコマンドは繰り返されません。

  1. 実行中のスレッドの実行を次のソース行まで継続するには、次のように入力します。
    tnext
  2. 実行中のスレッドの実行を現行ソース行から数えて 3 番目のソース行まで継続するには、次のように入力します。
    tnext 3

tnexti サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

tnexti サブコマンド

tnexti [Number]

tnexti サブコマンドは、実行中のスレッドを次の命令まで実行します。 Number パラメーターは、tnexti サブコマンドの実行回数を指定します。 Number パラメーターを指定しない場合は、tnexti は 1 回だけ実行されます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。

この操作時にすべてのスレッドが実行されます。 この操作時にブレークポイントをキャッチするには、$catchbp dbx 変数を設定します。 $catchbp 変数が設定されている場合、別のスレッドのブレークポイントに達すると、残りの回数については tnexti サブコマンドは繰り返されません。

  1. 実行中のスレッドの実行を次のマシン・インストラクションまで継続するには、次のように入力します。
    tnexti
  2. 実行中のスレッドの実行を現行マシン・インストラクションから数えて 3 番目のマシン・インストラクションまで継続するには、次のように入力します。
    tnexti 3

tnext サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

trace サブコマンド

trace [ SourceLine | Expression at SourceLine | Procedure | [ Variable ] [ at SourceLine | in Procedure ] | on load ModuleName ] [ if Condition ]

trace サブコマンドは、プログラム実行時に、指定したプロシージャー、 関数、ソース行、式、または変数に関するトレース情報を表示します。 SourceLine 変数は、整数として、 または : (コロン) および整数が後ろに続くファイル名文字列として指定できます。条件も指定できます。 dbx デバッグ・プログラムは、番号と各 trace サブコマンドを関連付けます。 これらの番号を表示する場合は、status サブコマンドを使用します。 トレースをオフにするには、delete サブコマンドを使用します。 それぞれ、enable および disable サブコマンドを使用して、トレースを使用可能にすることおよび使用不可にすることができます。

trace サブコマンドは、デバッグされるプロセスによって モジュールがロードまたはアンロードされるときにトレース情報を表示できます。 オプションの ModuleName パラメーターを使用すると、 単一のモジュール名を、または、以下のフォーマットでモジュール名とメンバー名のペアを以下のように 指定することができます。
ModuleName(MemberName)

ModuleName パラメーターを指定しないで on load フラグを使用すると、dbx コマンドはすべてのモジュールのロードとアンロードをトレースします。

デフォルトでは、トレースはプロセス・ベースで行われます。 スレッド・ベースのトレースを行うには、 例 8 に示す条件でスレッドを指定します。

フラグ

項目 説明
at SourceLine トレースされる式を検索するソース行を指定します。
if Condition トレースを開始する条件を指定します。トレースは、 if Condition が真のときにのみ開始されます。
in Procedure トレースされるプロシージャーまたは変数の検索に使用するプロシージャーを指定します。
on load ModuleName モニターするロード・モジュールを指定します。

  1. printf プロシージャーに対する各呼び出しをトレースするには、 次のように入力します。
    trace printf
  2. hello.c ファイルの、 22 行目の各実行をトレースするには、次のように入力します。
    trace "hello.c":22
  3. main プロシージャー内の、 x 変数の変更をトレースするには、 次のように入力します。
    trace x in main
  4. データ・アドレス 0x2004000 をトレースするには、 次のように入力します。
    set $A=0x2004000
    trace $A
    注: tracei サブコマンドは、 アドレスをトレースするように設計されています。
  5. 指定した Procedure がアクティブな場合は、 ソース行の表示を制限することができます。トレース情報を作成するタイミングを制御する場合は、オプションの Condition を指定することもできます。次に例を示します。
    (dbx) trace in sub2
    [1] trace in sub2
    (dbx) run
    trace in hellosub.c:  8  printf("%s",s);
    trace in hellosub.c:  9  i = '5';
    trace in hellosub.c:  10  }
  6. プロシージャーが呼び出されるたびに、あるいは戻されるたびに、 メッセージを表示することができます。プロシージャーが呼び出される場合は、 表示される情報には渡されたパラメーターと呼び出し側のルーチンの名前が含まれます。 プロシージャーが戻される場合は、情報には Procedure の戻り値が含まれます。 次に例を示します。
    (dbx) trace sub
    [1] trace sub
    (dbx) run
    calling sub(s = "hello", a = -1, k = delete) from function main
    returning "hello" from sub
  7. プログラムが指定ソース行に達したときに、 Expression の値を表示することができます。行番号とファイルが表示されますが、ソース行は表示されません。 次に例を示します。
    (dbx) trace x*17 at "hellosub.c":8 if (x > 0)
    [1] trace x*17 at "hellosub.c":8 if x > 0
    (dbx) run
    at line 8 in file "hellosub.c": x*17 = 51
     
    (dbx) trace x
    [1] trace x
    initially (at line 4 in "hello.c"):  x = 0
    after line 17 in "hello.c":  x = 3
  8. スレッド $t1 により作成された、 x 変数の変更をトレースするには、次のように入力します。
    (dbx) trace x if ($running_thread == 1)
  9. すべてのモジュールのロードまたはアンロードをトレースするには、 次のコマンドを入力します。
    trace on load
  10. モジュール Module のロードまたはアンロードをトレースするには、 次のコマンドを入力します。
    trace on load "Module"
  11. モジュール Module のメンバー Member のロードまたはアンロードをトレースするには、 次のコマンドを入力します。
    trace on load "Module(Member)"

tracei サブコマンドも参照してください。

tracehwp サブコマンド

tracehwp Address Size

tracehwp サブコマンドは、ハードウェアの監視ポイントの停止を 指定されたメモリー領域に設定します。dbx デバッグ・プログラムは、 その領域の内容が変化したときにトレース情報を出力します。
注:
  1. tracehwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
  2. 単一の監視ポイントのみ設定できるというハードウェアの制限により、 stophwp および tracehwp で別のハードウェア監視ポイント・イベントを作成しようとすると、 アクティブな監視ポイント・イベントは矛盾するものとして動作することになります。そのため、新しいイベントを 作成する前に、前のイベントは削除する必要があります。また、アクティブなソフトウェアの監視ポイント の存在 (stop および trace サブコマンドの呼び出しにより 作成された) はハードウェアの監視ポイントのパフォーマンス向上を打ち消すため、 これらのタイプのイベントも矛盾するものとして動作するので、 ハードウェアの監視ポイントを作成する前に削除する必要があります。

  1. アドレス 0x200004e8 で始まる 4 バイト・メモリー領域の内容が変化するたびにトレースするには、 次のコマンドを入力します。
     tracehwp 0x200004e8 4 

stophwp サブコマンドを参照してください。

tracei サブコマンド

tracei [ [ Address ] [ at Address | in Procedure ] | Expression at Address ] [ if Condition ]

tracei サブコマンドは、以下の場合にトレースをオンにします。

  • Address フラグが設定されている場合に、 Address パラメーターで指定したアドレスの内容が変更されたとき。
  • at Address パラメーターを指定している場合に、その at Address 命令を実行したとき。
  • in Procedure フラグが組み込まれている場合に、 その Procedure で指定したプロシージャーがアクティブなとき。
  • if Condition フラグが組み込まれている場合に、 Condition パラメーターで指定した条件が真のとき。

フラグ

項目 説明
at Address アドレスを指定します。このアドレスにある命令が実行されると、トレースが使用可能になります。
if Condition 条件を指定します。この条件が満たされると、トレースが使用可能になります。
in Procedure プロシージャーを指定します。このプロシージャーがアクティブなときに、トレースが使用可能になります。

  1. 実行された各命令をトレースするには、次のコマンドを入力します。
    tracei
  2. アドレス 0x100020f0 の命令が、 実行されるたびにトレースするには、次のコマンドを入力します。
    tracei at 0x100020f0
  3. main プロシージャーがアクティブなときに、 メモリー位置 0x20004020 の内容が変更されるたびにトレースするには、 次のコマンドを入力します。
    tracei 0x20004020 in main
  4. アドレス 0x100020f0 の命令が、 スレッド $t4 により実行されるたびにトレースするには、次のコマンドを入力します。
    tracei at 0x100020f0 if ($running_thread == 4)

trace サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグdbx によるマシン・レベルのデバッグ』も参照してください。

tskip サブコマンド

tskip [Number]

tskip サブコマンドは、実行中のスレッドの実行を現在の停止位置から継続します。 Number パラメーターで指定されたスレッド・レベル・ブレークポイントの数は、実行中のスレッドについてはスキップされます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。

他のすべてのスレッドはこの操作中に実行され、ユーザーが指定したすべてのブレークポイントおよび監視ポイントがキャッチされます。 ブレークポイントまたは監視ポイントに達したスレッドが 1 つでもあると、実行が停止される場合があります。 tskip サブコマンドによって開始された実行が別のスレッドのイベントのために停止しても、前のスレッドについて指定された tskip カウントは依然としてアクティブであり、その tskip カウントによって指定されたスレッド・レベル・ブレークポイント数は、プロセスの継続時にそのスレッドについては無視されます。スレッドが終了すると、そのスレッドに関連した tskip カウントは削除されます。

残りのスレッドの tskip カウントを表示するには、status サブコマンドを使用してください。 残りのスレッドの tskip カウントを削除するには、delete サブコマンドを使用してください。

実行中のスレッドについて、現行停止位置から数えて 2 番目のブレークポイントを検出するまで実行を継続するには、次のように入力します。
tskip 1

cont サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

tstep サブコマンド

tstep [Number]

tstep サブコマンドは、実行中のスレッドについて、現行ソース行から数えて指定数のソース行を実行します。 Number パラメーターは、tstep サブコマンドの実行回数を指定します。 Number パラメーターを指定しない場合は、tstep は 1 回だけ実行されます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。

この操作時にすべてのスレッドが実行されます。 $hold_next が設定されている場合は、実行中のスレッド以外のすべてのスレッドが保留されます。
注: tstep サブコマンドの動作を制御するには、set サブコマンドの $stepignore 変数を使用します。 $stepignore 変数を使用すると、tstep サブコマンドはデバッグ情報が使用できない大規模なルーチンを横切って次へ進むことができます。

  1. 実行中のスレッドの実行を 1 ソース行だけ継続するには、次のように入力します。
    tstep
  2. 実行中のスレッドの実行を 5 ソース行だけ継続するには、次のように入力します。
    tstep 5
  3. dbx プログラムが次のサンプル・コードに示すような printf 関数に単一ステップで進まないようにするには、
    60 printf ("hello world /n");
    次のように入力します。
    set $stepignore="function"; step

cont サブコマンド、 goto サブコマンド、tnext サブコマンド、set サブコマンド、および tstepi サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

tstepi サブコマンド

tstepi [Number]

tstepi サブコマンドは、実行中のスレッドについて、現行命令から数えて指定数の命令を実行します。 Number パラメーターは、tstepi サブコマンドの実行回数を指定します。 Number パラメーターを指定しない場合は、tstepi は 1 回だけ実行されます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。

この操作時にすべてのスレッドが実行されます。 $hold_next が設定されている場合は、実行中のスレッド以外のすべてのスレッドが保留されます。

  1. 実行中のスレッドの実行を 1 マシン・インストラクションだけ継続するには、次のように入力します。
    tstepi
  2. 実行中のスレッドの実行を 2 マシン・インストラクションだけ継続するには、次のように入力します。
    tstepi 5

gotoi サブコマンド、tnexti サブコマンド、および tstep サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

tstop サブコマンド

tstop { in Procedure | [Variable] at SourceLine [ if Condition ] } [for $tthreadnumber]

tstop サブコマンドは、スレッドのソース・レベルのブレークポイント停止を設定し、指定されたスレッドがブレークポイントに達するとアプリケーション・プログラムを一時停止します。 指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 次の条件のいずれかが起こると、指定されたスレッドは停止されます。
  • if Condition フラグが使用され、Condition が True である。
  • in Procedure フラグが使用され、Procedure が呼び出された。
  • at SourceLine フラグが使用され、SourceLine 行番号に達した。SourceLine 変数は、整数として、または : (コロン) と整数が続くファイル名文字列として指定できます。

スレッド・レベルのブレークポイントは、システム・スコープ・スレッドでのみ設定できます。 スレッド・レベルおよびプロセス・レベルのブレークポイントが同時に検出された場合、両方のブレークポイントが処理され、スレッド・レベルのブレークポイントが報告されます。スレッドが終了すると、そのスレッドに関連したイベントは削除されます。

フラグ

項目 説明
at SourceLine 行番号を指定します。
for $t threadnumber スレッド番号を指定します。
if Condition 条件 (例えば、true) を指定します。
in Procedure 呼び出されるプロシージャーを指定します。

  1. スレッド 2 の実行中に func プロシージャーの最初のステートメントで実行を停止するには、次のように入力します。
    tstop in func for $t2
  2. 実行の行 12 で x 変数の値が変更されたときに現行スレッドの実行を停止するには、次のように入力します。
    tstop x at 12

ttrace サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

tstophwp サブコマンド

tstophwp address size [for $t threadnumber]

tstophwp サブコマンドは、指定されたメモリー領域のスレッド・レベルのハードウェア監視ポイントを設定します。 プログラムは、指定されたスレッドの実行中にその領域の内容が変化したときに停止します。 指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルの監視ポイント・イベントは、システム・スコープ・スレッドにのみ設定できます。 スレッドが終了すると、そのスレッドに関連したイベントは削除されます。

注:
  1. tstophwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
  2. 単一の監視ポイントのみ設定できるというハードウェアの制限により、tstophwp および ttracehwp を使用して別のハードウェア監視ポイント・イベントを作成しようとすると、アクティブなスレッド監視ポイント・イベントは矛盾するものとして動作することになります。 これを避けるには、新しいイベントを作成する前に、前のイベントを削除する必要があります。 また、アクティブなソフトウェア監視ポイント (stop および trace サブコマンドの呼び出しにより作成された) が存在すると、ハードウェア監視ポイントのパフォーマンス向上が打ち消されるため、これらのタイプのイベントも、ハードウェア監視ポイントを作成する前に削除して、矛盾を回避する必要があります。
  3. プロセス・レベルの監視ポイントが存在する場合、スレッド・レベルの監視ポイントを持たないスレッドが、プロセス監視ポイントの位置を監視します。 スレッドにスレッド・レベルの監視ポイントがある場合、そのスレッドはスレッド監視ポイントの位置を監視します。
  4. スレッド・レベルのハードウェア監視ポイントとプロセス・レベルのハードウェア監視ポイントは、互いに矛盾せずに共存できます。
  5. 同じアドレスについてプロセス・レベルの監視ポイントとスレッド・レベルの監視ポイントが存在する場合、プロセス・レベルの監視ポイント・イベントが報告されます。

フラグ

項目 説明
for $t threadnumber スレッド番号を指定します。

スレッド 2 の実行中にアドレス 0x200004e8 で始まる 4 バイト・メモリー領域の内容が変化したときにプログラムを停止するには、次のように入力します。

tstophwp 0x200004e8 4 for $t2

ttracehwp サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

tstopi サブコマンド

tstopi { in Procedure | [Address] at Address [ if Condition ] } [for $tthreadnumber]

tstopi サブコマンドは、スレッドの命令レベルのブレークポイント停止を設定します。指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 次の条件のいずれかが起こると、指定されたスレッドは停止されます。
  • if Condition フラグが使用され、Condition が True である。
  • in Procedure フラグが使用され、Procedure が呼び出された。
  • at Address フラグが使用され、Address に達した。

スレッド・レベルのブレークポイントは、システム・スコープ・スレッドでのみ設定できます。 スレッド・レベルのブレークポイントとプロセス・レベルのブレークポイントに同時に達した場合、両方のブレークポイントが処理され、スレッド・レベルのブレークポイントが報告されます。スレッドが終了すると、そのスレッドに関連したイベントは削除されます。

フラグ

項目 説明
at Address マシン・インストラクションのアドレスを指定します。
for $t threadnumber スレッド番号を指定します。
if Condition 条件を指定します。
in Procedure 呼び出されるプロシージャーを指定します。

  1. スレッド 2 の実行中にアドレス 0x100020f0 で実行を停止するには、次のように入力します。
    tstopi at 0x100020f0 for $t2
  2. 現行スレッドの実行中に func プロシージャーが入力されたときに実行を停止するには、次のように入力します。
    tstopi in func

ttracei サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

ttrace サブコマンド

ttrace { [Variable] at SourceLine | Procedure } [ if Condition ] [ for $tthreadnumber]

ttrace サブコマンドは、指定されたスレッドの実行時に、指定されたプロシージャー、関数、ソース行、および変数に関するトレース情報を表示します。 SourceLine 変数は、整数として、または : (コロン) と整数が続くファイル名文字列として指定できます。dbx デバッグ・プログラムは、番号と各 ttrace サブコマンドを関連付けます。 これらの番号を表示する場合は、status サブコマンドを使用します。 トレースをオフにするには、delete サブコマンドを使用します。 それぞれ、enable および disable サブコマンドを使用して、トレースを使用可能にすることおよび使用不可にすることができます。

スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルのトレースは、システム・スコープ・スレッドにのみ設定できます。 指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが終了すると、それに関連したイベントが削除されます。

フラグ

項目 説明
at SourceLine トレースされる式を検索するソース行を指定します。
for $t threadnumber スレッド番号を指定します。
if Condition トレースを開始する条件を指定します。 トレースは Condition が True の場合にのみ開始されます。
in Procedure トレースされるプロシージャーまたは変数を検索するプロシージャーを指定します。

  1. スレッド 2 の実行中に printf プロシージャーへの各呼び出しをトレースするには、次のように入力します。
    ttrace printf for $t2
  2. 現行スレッドの実行中に hello.c/ ファイルの行 22 の各実行をトレースするには、次のように入力します。
    ttrace "hello.c":22

ttracei サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

ttracei サブコマンド

ttracei [Address] at Address [ if Condition ] } [for $tthreadnumber]

次の条件のいずれかが起こると、ttracei サブコマンドは指定されたスレッドのトレースをオンにします。
  • if Condition フラグが組み込まれ、Condition が True である。
  • at Address フラグが指定され、Address の命令が実行された。

スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルのトレースは、システム・スコープ・スレッドにのみ設定できます。 指定されたスレッドは、イベントの作成時に存在していなければなりません。スレッドが終了すると、それに関連したイベントが削除されます。

フラグ

項目 説明
at Address アドレスを指定します。このアドレスにある命令が実行されると、トレースが使用可能になります。
for $t threadnumber スレッド番号を指定します。
if Condition 条件を指定します。この条件が満たされると、トレースが使用可能になります。

  1. スレッド 3 の実行中にアドレス 0x100020f0 の命令が実行されるたびにトレースするには、次のように入力します。
    tracei at 0x100020f0 for $t3
  2. 現行スレッドによってアドレス 0x100020f0 の命令が実行されるたびにトレースするには、次のように入力します。
    tracei at 0x100020f0 

ttrace サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

ttracehwp サブコマンド

ttracehwp address size [for $tthreadnumber]

ttracehwp サブコマンドは、指定されたメモリー領域に対してスレッド・レベルのハードウェア監視ポイントのトレースを設定します。 dbx デバッグ・プログラムは、指定されたスレッドの実行中にその領域の内容が変化したときにトレース情報を表示します。 指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルの監視ポイント・イベントは、システム・スコープ・スレッドにのみ設定できます。 スレッドが終了すると、そのスレッドに関連したイベントは削除されます。

注:
  1. ttracehwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
  2. 単一の監視ポイントのみ設定できるというハードウェアの制限により、tstophwp および ttracehwp を使用して別のハードウェア監視ポイント・イベントを作成しようとすると、アクティブなスレッド監視ポイント・イベントは矛盾するものとして動作することになります。 これを避けるには、新しいイベントを作成する前に、前のイベントを削除する必要があります。 また、アクティブなソフトウェア監視ポイント (stop および trace サブコマンドの呼び出しにより作成された) が存在すると、ハードウェア監視ポイントのパフォーマンス向上が打ち消されるため、これらのタイプのイベントも、ハードウェア監視ポイントを作成する前に削除して、矛盾を回避する必要があります。
  3. プロセス・レベルの監視ポイントが存在する場合、スレッド・レベルの監視ポイントを持たないスレッドが、プロセス監視ポイントの位置を監視します。 スレッドにスレッド・レベルの監視ポイントがある場合、そのスレッドはスレッド監視ポイントの位置を監視します。
  4. スレッド・レベルのハードウェア監視ポイントとプロセス・レベルのハードウェア監視ポイントは、互いに矛盾せずに共存できます。
  5. 同じアドレスについてプロセス・レベルの監視ポイントとスレッド・レベルの監視ポイントが存在する場合、プロセス・レベルの監視ポイント・イベントが報告されます。

フラグ

項目 説明
for $t threadnumber スレッド番号を指定します。

スレッド 2 の実行中にアドレス 0x200004e8 で始まる 4 バイト・メモリー領域の内容が変化するたびにトレースするには、次のように入力します。

ttracehwp 0x200004e8 4 for $t2

tstophwp サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ『複数のスレッドを含むプログラムのデバッグ』を参照してください。

unalias サブコマンド

unalias Name

unalias サブコマンドは、 Name パラメーターにより指定された別名を除去します。

別名 printx を除去するには、次のように入力します。

unalias printx

alias サブコマンドを参照してください。また、『dbx サブコマンドの別名の作成 プログラミングの一般概念: プログラムの作成およびデバッグ』のセクションも参照してください。

unset サブコマンド

unset Name

unset サブコマンドは、 Name パラメーターにより指定された名前と関連付けられている dbx デバッグ・プログラムの変数を削除します。

浮動小数点レジスターの表示を禁止する変数を削除するには、 次のように入力します。

unset $noflregs

set サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ特殊なデバッグ変数による印刷出力の変更』も参照してください。

up サブコマンド

up [ Count ]

up サブコマンドは、 現行関数をスタックの上方へ Count 番号分移動させます。 現行関数は、名前の解決に使用します。Count パラメーターのデフォルト値は 1 です。

  1. 現行関数をスタックの上方へ 2 レベル移動するには、 次のように入力します。
    up 2
  2. スタック上の現行関数を表示するには、次のように入力します。
    up 0

down サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ『現在のファイルまたはプロシージャーの変更』および『スタック・トレースの表示』も参照してください。

use サブコマンド

use [ { + | Directory | '['RegularExpression = NewPath']' } ... ]

use サブコマンドは、dbx デバッグ・プログラムがソース・ファイルを検索するときの検索先となるディレクトリーのリスト、 および適用されるパス・マッピングを設定します。 引数を指定せずに use サブコマンドを指定すると、 検索対象のディレクトリーと適用されるパス・マッピングの現行リストが表示されます。

@ (アットマーク) は、dbx プログラムに対して、 オブジェクト・ファイル内に絶対パス名の情報があればそれを検索するように指示する特殊ディレクトリーです。 @ という名前の相対ディレクトリーを検索する場合は、検索パスに ./@ を使用する必要があります。

use サブコマンドは、+ (正符号) を使用して、 検索対象となるディレクトリーのリストにディレクトリーまたはマッピングを追加します。+ は、use サブコマンドへの入力として指定される場合は、 ディレクトリーとマッピングの現行リストを表します。 現行リストの最後にディレクトリーまたはマッピングを付加するには、 新しいディレクトリーまたはマッピングの前に + を指定する必要があります。 ディレクトリーを現行リストの先頭に追加するには、新しいディレクトリーまたはマッピングの後に + を指定する必要があります。+ という名前のディレクトリーがある場合は、 そのディレクトリーの絶対パス名 (例えば、./+ または /tmp/+ など) を指定します。

use サブコマンドは、[] (大括弧) で囲まれている文字列を解釈します。この大括弧の中には、 パス・マッピングとして = (等号) が入っています。 これらのパス・マッピングは、特殊 @ ディレクトリーと一緒に使用されます。 これを使用すると、ソース・ファイルのディレクトリー構造全体がコンパイル後に再配置された場合に、ユーザーがソース・ファイルの場所を示すのがより簡単になります。

デバッグ中にソース・ファイルを見つけようとするときには、 以下の規則が適用されます。
  • リスト内のディレクトリーが、指定の順序で評価されます。
  • リスト内のディレクトリーの評価時には、指定のファイルのためにディレクトリーが検索されます。そのディレクトリーにファイルが入っていて、 読み取り可能であるときは、このファイルが使用されます。
  • 特殊 @ ディレクトリーの評価時に、1 つ以上のパス・マッピングが指定されていて、パス・マッピングの RegularExpression 部分がオブジェクト・ファイル内でファイルの絶対パス名情報の最初の n 文字に一致していて、パス・マッピングの NewPath 部分の置換によって読み取り可能ファイルが得られる場合は、このファイルが使用されます。
  • 特殊 @ ディレクトリーの評価時に、パス・マッピングが指定されていないか、または一致がない場合、絶対パス名情報に対応するディレクトリーが検索されます。そのディレクトリーにファイルが入っていて、 読み取り可能であるときは、このファイルが使用されます。
  • 複数のパス・マッピングから読み取り可能ファイルが得られる場合は 、RegularExpression が絶対パス名情報と 最も多い文字数 (1 ... n) で一致する (すなわち最も特定的な情報を持つ) パス・マッピングが適用され、 その結果のファイルが使用されます。
  • 複数のパス・マッピングから読み取り可能ファイルが得られ、しかも、 パス・マッピングの特定の度合いが等しい場合は、 リストの最初に最も近いパス・マッピングが適用され、 その結果のファイルが使用されます。
注: 特殊 @ ディレクトリーがリストのメンバーに入っていない場合は、指定が可能であったどのパス・マッピングも無視されます。

  1. 検索されるディレクトリーのリストを、現行ディレクトリー (.)、 その親ディレクトリー (..)、および /tmp ディレクトリーに変更するには、次のように入力します。
    use . .. /tmp
  2. 検索されるディレクトリーのリストを、現行ディレクトリー (.)、 コンパイル時にソース・ファイル格納場所であったディレクトリー (@)、 および ../source ディレクトリーに変更するには、次のように入力します。
    use . @ ../source
  3. 検索されるディレクトリーのリストに、 /tmp2 ディレクトリーを追加するには、次のように入力します。
    use + /tmp2
  4. 検索されるディレクトリーのリストの先頭に /tmp3 ディレクトリーを追加するには、次のように入力します。
    use /tmp3 +
  5. 絶対パス名情報が /home/developer で始まるソース・ファイルが現在は /mnt の下に配置されていることを示すには、 次のように入力します。
    use + [/home/developer=/mnt]
  6. /home/developer で始まる絶対 パス名情報をもつファイルを、最初に /latest から検索し、次にそのファイルがそこになければ、 /stable から検索するように dbx プログラムに指示するには、次のように入力します。
    use + [/home/developer=/latest] [/home/developer=/stable]

edit サブコマンド、 list サブコマンドも参照してください。

whatis サブコマンド

whatis Name

whatis サブコマンドは、Name パラメーターで指定した変数名、 プロシージャー名、または関数名を指定する Name の宣言を表示します。パラメーターは、 オプションとしてブロック名で修飾することができます。

注: whatis サブコマンドを使用できるのは、dbx デバッグ・プログラムの実行中に限られます。

  1. x 変数の宣言を表示するには、 次のように入力します。
    whatis x
  2. main プロシージャーの宣言を表示するには、 次のように入力します。
    whatis main
  3. main 関数内の、 x 変数の宣言を表示するには、次のように入力します。
    whatis main.x
  4. 列挙型、構造、または共用体タグの宣言を表示するには、$$TagName を使用します。
    (dbx) whatis $$status
    enum $$status { run, create, delete, suspend };

where サブコマンド

where [ all | $tthreadumber [(startframe endframe)] …] [ startframe endframe ] [ >File ]

where サブコマンドは、フレーム番号 startframe から endframe までに関連したアクティブなプロシージャーおよび関数のリストを表示します。 スタック・フレームの番号付けは、現在アクティブな関数のスタック・フレームから始まります (このフレームの番号は常に 0 となります)。 n 個のフレームがある場合、main 関数のフレームの番号は n-1 になります。>File フラグを使用すると、 このサブコマンドの出力を指定したファイルにリダイレクトできます。

マルチスレッド環境では、オプション all を指定すると、使用可能なすべてのスレッドのスタックの詳細が表示されます。各スレッドのスタックの詳細を表示するには、where サブコマンドを使用してスレッド番号を指定します。各スレッドの開始フレームと終了フレームを指定しないと、グローバルの開始フレーム番号と終了フレーム番号でスタック・フレームが表示されます。オプションなしでコマンドを使用すると、現行スレッドのスタック・フレームが表示されます。

フラグ

項目 説明
>File 指定したファイルに出力をリダイレクトします。

frame サブコマンド、up サブコマンド、および down サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグスタック・トレースの表示』も参照してください。

  1. すべてのスレッドのスタックの詳細を表示するには、次のように入力します。
    where all
  2. スレッド $t1、$t2、および $t3 のスタックの詳細を表示するには、次のように入力します。
    where $t1 $t2 $t3
  3. スレッド $t2 のスタックの詳細をスタック・フレーム 2-3 で表示し、$t1 と $t3 のスタックの詳細を両方ともスタック・フレーム 1-4 で表示するには、次のように入力します。
    where $t1 $t2(2 3) $t3 1 4

frame サブコマンド、up サブコマンド、および down サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグスタック・トレースの表示』も参照してください。

whereis サブコマンド

whereis Identifier

whereis サブコマンドは、 指定した ID と名前が一致するすべての記号の完全修飾を表示します。 記号が表示される順序には特に意味はありません。

x という名前のすべての記号の修飾名を表示するには、 次のように入力します。

whereis x

which サブコマンドも参照してください。

which サブコマンド

which Identifier

which サブコマンドは、ID の完全修飾を表示します。 完全修飾は、その ID が関連付けられている外部のブロックのリストで構成されています。

x 記号の完全修飾を表示するには、次のように入力します。

which x

whereis サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ名前の有効範囲化』のセクションも参照してください。

ファイル

項目 説明
a.out オブジェクト・ファイル。オブジェクト・コードが入っています。
core メモリー・ダンプが入っています。
.dbxinit 初期コマンドが入っています。

トランザクション・メモリーを使用するアプリケーションのデバッグ

トランザクション・メモリー (TM) を使用するアプリケーションで、最も信頼性の高いデバッグ・エイドは、トランザクション例外およびサマリー・レジスター ($texasr)、トランザクション失敗ハンドラー・アドレス・レジスター ($tfhar)、およびトランザクション失敗命令アドレス・レジスター ($tfiar) の各変数です。

$texasr$tfhar、および $tfiar の各変数は、print サブコマンドを使用して表示できます。これは、$iar 変数を表示するのに似ています。ただし、これらのレジスターの値は、assign サブコマンドを使用して操作することはできません。

$tfhar 変数および $tfiar 変数には、トランザクション失敗でデバッグされたテキスト・セグメントからの命令のアドレスが含まれています。$iar と同様に、$tfhar および $tfiar のレジスター変数の 2 つの最上位ビットは予約済みであり、これらのレジスター変数からアドレスを読み取ることなど考えられません。
注: $tfiar および $tfhar のレジスター変数を list サブコマンドと併用すると、dbx コマンドは、これらのレジスター変数の内容から 2 つの最上位ビットを除外したのち、アドレスを取り出します。
(dbx) list at $tfiar
または
(dbx) list at $tfhar

トランザクション失敗の原因は、$texasr 変数を使用して判別できます。 tm_status サブコマンドは、トランザクション失敗の原因および種類を解釈します。

dbx コマンドは、トランザクションのオカレンスをモニターし、以下の一連のメッセージを使用してトランザクション失敗の原因を表示します。 run サブコマンド、rerun サブコマンド、または continue サブコマンドを実行した後、以下のメッセージが表示されます。

  • Process {PID} may have failed a transaction - $texasr, $tfiar, $tfhar are valid and may be inspected
  • Process {PID} may have performed a transaction - $texasr, $tfiar, $tfhar, are valid and may be inspected

    このメッセージが表示されるのは、$trace_good_transaction 内部変数が設定されている場合のみです。

  • Process {PID} is in Transactional State – debugging efforts through dbx may result in repeated transaction failure or undefined behavior
  • Process {PID} is in Suspended State – debugging efforts through dbx may result in repeated transaction failure or undefined behavior

ここで、PID は、デバッグされているプロセスのプロセス ID です。