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 (記号テーブル生成) フラグを使用します。
-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 (整数除算)、mod、exp (指数) |
ビット単位演算 | -、I、bitand、xor、~. <<、>> |
論理演算 | or、and、not、II、&& |
比較式 | <、>、<=、>=、< > または !=、= または == |
その他 | (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 は、 xxx と xxx_ のように、 下線文字以外は同じであるシンボルを区別できるようになります。 |
例
- 次の例では、
プロセスと同時に dbx デバッグ・プログラムを始動する方法について説明します。例で使っているのは、samp.c というプログラムです。
まず、この C プログラムを下記のように -g オプションを使ってコンパイルし、
記号テーブル参照を含むオブジェクト・ファイルを作成します。このオブジェクト・プログラムの名前は samp です。
プログラム samp を実行すると、オペレーティング・システムはバス・エラーが発生したことを報告し、 次のように現在の作業ディレクトリーにコア・イメージを書き込みます。$ cc -g samp.c -o 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
- この例では、dbx をプロセスに接続する方法を示しています。この例のプログラム名は、looper.c です。
上記のプログラムは、i がまったく増分されないため、 終了しません。looper.c を -g フラグを指定して コンパイルし、シンボリック・デバッグ機能を獲得します。main() { int i,x[10]; for (i = 0; i < 10;); }
コマンド・ラインから looper を実行し、 実行中に dbx をプログラムに接続するために次のステップを実行します :$ cc -g looper.c -o looper
- dbx を looper に接続するには、
プロセス ID を決定しなければなりません。looper をバックグラウンド・プロセスとして
実行しなかった場合は、X Window を別にオープンしなければなりません。
この X Window から、次のように入力します。
ここでは、UserID はユーザーのログイン ID です。そのユーザーに属するアクティブ・プロセスがすべて次のように表示されます。ps -u UserID
PID TTY TIME COMMAND 68 console 0:04 sh 467 lft3 10:48 looper
この例では、looper のプロセス ID は 467 です。
- dbx を looper に接続するには、
次のように入力します。
$ 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 で開始されたものとして、 プロセスを照会およびデバッグすることができます。
- dbx を looper に接続するには、
プロセス ID を決定しなければなりません。looper をバックグラウンド・プロセスとして
実行しなかった場合は、X Window を別にオープンしなければなりません。
この X Window から、次のように入力します。
- 実行可能ファイル objfile のソース・ファイルを検索するためのディレクトリーのリストにディレクトリーを追加するには、次のように入力します。
$dbx -I /home/user/src -I /home/group/src objfile
dbx が始動されると、 use サブコマンドを使用して、 上記の処理を実行できます。use コマンドはディレクトリー・リストを再設定しますが、-I フラグはディレクトリー・リストにディレクトリーを追加します。
- -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 フラグを使うと、コア・イメージをとらなくても、 ユーザーのプロセスのメモリー状態を検査することができます。
- デバッグ・プログラムのための環境変数を指定するには、次のように入力します。
dbx -E LIBPATH=/home/user/lib -E LANG=Ja_JP objfile
- プロセスに付加している場合に代替オブジェクト・ファイルとライブラリーを指定するには、次のように入力します。
dbx –a 467 –B debug_samp –p /usr/lib/=./dir/debug_libs/
- 始動時の個別のデバッグ・ファイルを指定するには、次のように入力します。
dbx –B /usr/debug_samp.stab debug_samp
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 | プラグインをアンロードします。 |
式の値を表示するかプロシージャーを実行して、そのプロシージャーの戻りコードを表示します。 | |
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 は以前に指定した正規表現を探して前方向に検索します。 検索はファイルの終わりで先頭に折り返します。
例
- 現行ソース・ファイル内で数値 12 を前方向に検索するには、
次のように入力します。
/ 12
- 直前の検索を繰り返すには、次のように入力します。
/
? (検索) サブコマンドと、 regcmp サブルーチンを参照してください。
? サブコマンド
? [ RegularExpression [ ? ] ]
? サブコマンドは、現行ソース・ファイル内で逆方向に検索を行って、 RegularExpression パラメーターにより指定されたパターンを探します。 引数を付けずに ?引数を無指定でサブコマンドを入力すると、 dbx コマンドは逆方向に検索を行って、以前指定した正規表現を探します。検索はファイルの終わりで先頭に折り返します。
例
- 現行ソース・ファイル内で、
文字 z を逆方向に検索するには、次のように入力します。
?z
- 直前の検索を繰り返すには、次のように入力します。
?
/ (検索) サブコマンドと、 regcmp サブルーチンを参照してください。
addcmd サブコマンド
addcmd { Number... | all } "commands_string"
addcmd サブコマンドは、指定されたイベントに dbx サブコマンドを追加します。この指定されたイベントは、そのイベントに対応するブレークポイント、トレース・ポイント、または監視ポイントが実行されるたびに実行されます。dbx サブコマンドは "commands_string" パラメーターで指定できます。このパラメーターはセミコロン (;) で区切られた dbx サブコマンドのグループです。 dbx を追加するイベントは、Number パラメーターで指定できます。また、all フラグを使用して、すべてのイベントに dbx サブコマンドを追加することもできます。
フラグ
項目 | 説明 |
---|---|
all | すべてのイベントに dbx サブコマンドを追加します。 |
例
- イベント番号 1 に where サブコマンドを追加するには、次のように入力します。
addcmd 1 "where"
- イベント番号 2 に registers サブコマンドを追加するには、次のように入力します。
addcmd 2 "registers"
- イベント番号 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 サブコマンドを使用すると、 現行の別名がすべて表示されます。
例
- rr を、rerun の別名にするには、次のように入力します。
alias rr rerun
- コマンド・ラインに printandstep と入力したときに、
print n と step の、
2 つのサブコマンドを実行させるには、次のように入力します。
alias printandstep "print n; step"
- 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 パラメーターで指定された変数に代入します。
例
- 変数 x に値 5 を代入するには、
次のように入力します。
assign x = 5
- 変数 x に変数 y の値を代入するには、
次のように入力します。
assign x = y
- 変数 z に文字値「z」を代入するには、
次のように入力します。
assign z = 'z'
- 論理タイプ変数 B にブール値 false を代入するには、
次のように入力します。
assign B = false
- 文字ポインター Y に、
「Hello World」という文字列を代入するには、
次のように入力します。
assign Y = "Hello World"
- 型チェックを使用不可にするには、
次のように入力して、dbx デバッグ・プログラム変数 $unsafeassign を設定します。
set $unsafeassign
「変数の表示および変更」のセクションを参照してください。
attribute サブコマンド
attribute [ AttributeNumber ... ]
attribute サブコマンドは、AttributeNumber パラメーターにより 定義されたユーザー・スレッド、mutex、または条件属性オブジェクトに関する情報を表示します。 パラメーターを指定しないと、すべての属性オブジェクトが表示されます。
リストされる属性オブジェクトごとに、以下の情報が表示されます。
項目 | 説明 |
---|---|
attr | 属性オブジェクトのシンボル名を $aAttributeNumber フォーマットで示します。 |
obj_addr | 属性オブジェクトのアドレスを示します。 |
type | 属性オブジェクトのタイプを示します。この値には thr、mutex、または cond があり、それぞれユーザー・スレッド、mutex、および条件変数を表します。 |
state | 属性オブジェクトの状態を示します。この値は valid または inval のいずれかです。 |
stack | スレッド属性オブジェクトのスタック・サイズ属性を示します。 |
scope | スレッド属性オブジェクトの有効範囲属性を示します。この値は、スレッドの競合有効範囲を決定し、リソース処理のために競合するスレッドのセットを定義します。 値は、 システムまたはプロセスの競合有効範囲を表す sys または pro です。 |
prio | スレッド属性オブジェクトの優先順位属性を示します。 |
sched | スレッド属性オブジェクトの schedpolicy 属性を示します。 この属性はスケジュール・ポリシーを制御します。 値は fifo、rr (ラウンドロビン)、 または other です。 |
p-shar | mutex または条件属性オブジェクトのプロセス共用属性を示します。mutex または条件は、 別のプロセスに属するスレッドがアクセスできる場合は、プロセス共用となります。値は、 yes または no です。 |
protocol | mutex のプロトコル属性を示します。この属性は、 スレッドの優先順位に基づいて mutex を保持する効果を決定します。値は no_prio、prio、protect のいずれかです。 |
clock |
条件属性オブジェクトのクロック属性を示します。
この属性は、条件変数を待機しているスレッド
がタイムアウトを指定されているとき、どのクロックを使用する必要があるかを判別します。
値は realtime または monotonic とすることができます。
|
- dbx デバッグ・プログラムの print サブコマンドは、シンボルによる属性名を認識し、 対応するオブジェクトの状況を表示するために使用できます。
- 使用可能な属性は、実装される POSIX オプションに応じて異なります。
例
- すべての属性に関する情報を表示するには、次のように入力します。
出力は以下のようになります。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
- 属性 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 パラメーターで指定されたプロシージャーを実行します。 戻りコードは表示されません。パラメーターを指定すると、 それらのパラメーターは実行中のプロシージャーに渡されます。
例
dbx コマンドの実行中にコマンドを呼び出すには、 次のように入力します。
(dbx) call printf("hello")
hello
printf は正常に処理を終了します。
case サブコマンド
case [ default | mixed | lower | upper ]
case サブコマンドは、dbx デバッグ・プログラムが記号を解釈する方法を変更します。 デフォルトの記号処理は、現行の言語に基づいています。現行の言語が C、C++、または未定義であれば、記号は大文字に変換されません。現行の言語が Fortran であれば、記号は小文字に変換されます。このサブコマンドは、現行の言語と整合しない方法で記号を解釈する必要がある場合に使用します。
パラメーターを付けずに case サブコマンドを入力すると、 現在のケース・モードが表示されます。
フラグ
項目 | 説明 |
---|---|
default | 現行の言語により異なります。 |
mixed | 記号の解釈を、それらが実際に表示されるとおりに行います。 |
lower | 記号を小文字として解釈させます。 |
upper | 記号を大文字として解釈させます。 |
例
- 現在のケース・モードを表示するには、次のように入力します。
case
- dbx に対して、
シンボルを実際の表示どおりに解釈するように命令するには、次のように入力します。
case mixed
- dbx に対して、
シンボルを大文字として解釈するように命令するには、次のように入力します。
case upper
「小文字から大文字への変数の変換」のセクションを参照してください。
catch サブコマンド
catch [ SignalNumber | SignalName ]
catch サブコマンドは、シグナルがアプリケーション・プログラムへ送信される前に、 指定したシグナルのトラッピングを開始します。このサブコマンドは、 デバッグ中のアプリケーション・プログラムが割り込みなどのシグナルを処理する場合に有効です。 トラップされるシグナルは、SignalNumber パラメーターまたは SignalName パラメーターを使用して、番号または名前で指定できます。 シグナル名は大/小文字の区別がなく、SIG プレフィックスはオプションです。 SignalNumber パラメーターおよび SignalName パラメーターを指定しない場合は、デフォルトとして、SIGHUP、SIGCLD、SIGALARM、SIGKILL の各シグナルを除くすべてのシグナルがトラップされます。 引数を指定していない場合は、トラップされるシグナルの現行リストが表示されます。
例
- dbx コマンドがキャッチするシグナルの、
現在のリストを表示するには、次のように入力します。
catch
- シグナル SIGALARM をトラップするには、
次のように入力します。
catch SIGALARM
ignore サブコマンド、 およびシグナルの処理を参照してください。
clear サブコマンド
clear SourceLine
clear サブコマンドは、特定のソース行にあるすべての停止を除去します。SourceLine パラメーターは、以下の 2 つのフォーマットで指定できます。
- 整数として
- 後ろに : (コロン) と整数が続くファイル名文字列として
例
行 19 に設定されたブレークポイントを除去するには、 次のように入力します。
clear 19
cleari サブコマンドと、 delete サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『ブレークポイントの設定および削除』のセクションも参照してください。
cleari サブコマンド
cleari Address
cleari サブコマンドは、 Address パラメーターで指定されたアドレスにあるすべてのブレークポイントをクリアします。
例
- アドレス 0x100001b4 に設定されたブレークポイントを除去するには、
次のように入力します。
cleari 0x100001b4
- 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 | 待機中のスレッドのない条件変数を表示します。 |
例
- すべての条件変数に関する情報を表示するには、次のように入力します。
condition
- 待機中のスレッドがあるすべての条件変数に関する情報を表示するには、
次のように入力します。condition wait
- 条件変数 3 に関する情報を表示するには、次のように入力します。
出力は以下のようになります。condition 3
cv obj_addr num_wait waiters $c3 0x20003290 0
attribute サブコマンド、 mutex サブコマンド、 print サブコマンド、 および thread サブコマンドを参照してください。
また、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『条件変数の使用』も参照してください。
cont サブコマンド
cont [ SignalNumber | SignalName ]
cont サブコマンドは、現在の停止位置からアプリケーション・プログラムの実行を継続し、 プログラムが終了するか、別のブレークポイントに行き当たるまで、続けます。 シグナルが SignalNumber パラメーターに指定した番号か、 SignalName パラメーターで指定した名前によって指定されている場合は、 プログラムはそのシグナルを受信したものとして継続されます。 シグナル名は、大文字、小文字を区別せず、SIG プレフィックスはオプションです。 シグナルが指定されていないと、プログラムは停止されなかったものとして継続されます。
例
- プログラムの実行を現在の停止位置から継続するには、次のように入力します。
cont
- シグナル 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 サブコマンドは使用可能なマッピングをすべて表示します。
例
- 共用メモリー領域のマッピングを表示するには、次のように入力します。
coremap shm
- メモリー・マップ済み領域のマッピングを表示するには、次のように入力します。
coremap mmap
- ローダー・エントリーで示されたすべての領域のマッピングを表示するには、次のように入力します。
coremap loader
- 使用可能なマッピングをすべて表示するには、次のように入力します。
coremap
corefile サブコマンドを参照してください。
delcmd サブコマンド
delcmd EventNumber { Number... | all }
delcmd サブコマンドは、指定されたイベントに関連した dbx サブコマンドを除去します。 除去する dbx サブコマンドは、Number パラメーターで指定できます。また、all フラグを使用して、指定されたイベントに関連したすべての dbx サブコマンドを除去することもできます。 EventNumber パラメーターは、dbx サブコマンドを除去するイベントを指定します。
フラグ
項目 | 説明 |
---|---|
all | 指定されたイベントに関連したすべての dbx サブコマンドを除去します。 |
例
- イベント番号 2 からすべての dbx サブコマンドを除去するには、次のように入力します。
delcmd 2 all
- イベント番号 3 から dbx サブコマンド番号 1 を除去するには、次のように入力します。
delcmd 3 1
- イベント番号 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 | スレッド番号を指定します。 |
例
- アプリケーション・プログラムからすべてのトレースと停止を除去するには、次のように入力します。
delete all
- イベント番号 4 のトレースと停止を除去するには、次のように入力します。
delete 4
- スレッド 3 の tskip カウントを除去するには、次のように入力します。
delete tskip for $t3
- 現行スレッドの tskip カウントを除去するには、次のように入力します。
delete tskip
clear サブコマンド、cleari サブコマンド、status サブコマンド、tskip サブコマンド、および プログラミングの一般概念: プログラムの作成およびデバッグ の『ブレークポイントの設定および削除』を参照してください。
detach サブコマンド
detach [ SignalNumber | SignalName ]
detach サブコマンドは、アプリケーション・プログラムの実行を継続し、 デバッグ・プログラムを終了します。シグナルは、以下のいずれかによって指定することができます。
- 名前。SignalName パラメーターを使用。
- 番号。SignalNumber パラメーターを使用。
シグナル名は、大文字、小文字を区別せず、SIG プレフィックスはオプションです。
シグナルが指定されていると、プログラムはそのシグナルを受信したものとして継続されます。シグナルが指定されていないと、プログラムは停止が起こらなかったものとして継続されます。
例
- アプリケーションの実行を継続し、dbx を終了するには、次のように入力します。
detach
- dbx を終了し、アプリケーションがシグナル SIGREQUEST を受信したとしてアプリケーションの実行を継続するには、
次のように入力します。
detach SIGREQUEST
『dbx デバッグ・プログラムの使用』を参照してください。
disable サブコマンド
disable { Number ... all }
disable サブコマンドは、デバッグ・イベントに関連する トレースと停止を使用不可にします。 Number パラメーターを使って使用不可にするトレースと 停止を指定することも、 あるいは all フラグを使って すべてのトレースと停止を使用不可にすることもできます。 dbx デバッグ・プログラムによってトレースまたは停止に関連付けられたイベント番号を表示するときは、 status サブコマンドを使用します。
フラグ
項目 | 説明 |
---|---|
all | トレースと停止をすべて除去します。 |
例
- アプリケーション・プログラムからすべてのトレースと停止を使用不可にするには、次のように入力します。
disable all
- イベント番号
4
のトレースと停止を使用不可にするには、次のように入力します。disable 4
詳しくは、enable subcommand、delete 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 | 指定したファイルに出力をリダイレクトします。 |
例
- アドレス 0x3fffe460 から、1 つの長ワード分の
メモリーの内容を 16 進で表示するには、次のように入力します。
0x3fffe460 / X
- 変数 y のアドレスから、2 バイト分の
メモリーの内容を文字として表示するには、次のように入力します。
&y / 2c
- Fortran 文字列 a_string の 6 番目から 8 番目までのエレメントを表示するには、次のように入力します。
&a_string + 5, &a_string + 7/c
プログラミングの一般概念: プログラムの作成およびデバッグ の『メモリー・アドレスの検査』を参照してください。
down サブコマンド
down [ Count ]
down サブコマンドは、 現行関数を Count レベル数だけスタックの下方へ移動します。現行関数は、名前の解決に使用します。Count パラメーターのデフォルト値は 1 です。
例
- スタックの下方に 1 レベル移動するには、次のように入力します。
down
- スタックの下方に 3 レベル移動するには、次のように入力します。
down 3
プログラミングの一般概念: プログラムの作成およびデバッグ の up サブコマンド、where サブコマンド、および『スタック・トレースの表示』を参照してください。
dump サブコマンド
dump [ Procedure | "PATTERN" ] [ >File ]
dump サブコマンドは、指定されたプロシージャー内のすべての変数の名前と値、または指定されたパターンに一致する変数の名前と値を表示します。Procedure パラメーターがピリオド (.) の場合は、すべてのアクティブ変数が表示されます。
Procedure パラメーターも "PATTERN" パラメーターも指定しない場合は、現行プロシージャーが使用されます。
"PATTERN" パラメーターは、メタ文字 *
、?
、および []
を使用したワイルドカード式です。
"PATTERN" を使用すると、グローバル・スペース内の (すべてのプロシージャーからの) 一致する記号がすべて表示されます。
>File フラグを使用すると、出力は指定したファイルにリダイレクトされます。
フラグ
項目 | 説明 |
---|---|
>File | 指定したファイルに出力をリダイレクトします。 |
例
- 現行プロシージャー内の変数の名前と値を表示するには、
次のように入力します。
dump
- add_count プロシージャー内の変数の名前と値を表示するには、
次のように入力します。
dump add_count
- 文字
s
で始まる変数の名前と値を表示するには、次のように入力します。dump "s*"
- 現行プロシージャー内の
変数の名前と値を、var.list ファイルにリダイレクトするには、
次のように入力します。
dump > var.list
「変数の表示および変更 プログラミングの一般概念: プログラムの作成およびデバッグ の」のセクションを参照してください。
edit サブコマンド
edit [ Procedure | File ]
edit サブコマンドは、指定したファイルに対してエディターを開始します。ファイルを指定するには、File パラメーターまたは Procedure パラメーターを使用します。Procedure パラメーターを使用すると、そのプロシージャーを含むファイルに対してエディターが開始します。 ファイルを指定しないと、エディターは現行のソース・ファイルに対して開始します。デフォルトは vi エディターです。 EDITOR 環境変数を必要なエディターの名前にリセットすると、このデフォルトをオーバーライドできます。
例
- 現行ソース・ファイル上でエディターを始動するには、次のように入力します。
edit
- main.c ファイル上でエディターを始動するには、
次のように入力します。
edit main.c
- do_count() プロシージャーが入っているファイル上のエディターを始動するには、
次のように入力します。
edit do_count
list サブコマンド、 vi コマンド、 または vedit コマンドのセクションを参照してください。
enable サブコマンド
enable { Number ... all }
enable サブコマンドは、デバッグ・イベントに関連する トレースと停止を使用可能にします。 Number パラメーターを使って使用可能にする トレースと停止を指定することも、 あるいは all フラグを使って すべてのトレースと停止を使用可能にすることもできます。 dbx デバッグ・プログラムによってトレースまたは停止に関連付けられたイベント番号を表示するときは、 status サブコマンドを使用します。
フラグ
項目 | 説明 |
---|---|
all | トレースと停止をすべて除去します。 |
例
- アプリケーション・プログラムからすべてのトレースと停止を使用可能にするには、次のように入力します。
enable all
- イベント番号
4
のトレースと停止を使用可能にするには、次のように入力します。enable 4
詳しくは、disable subcommand、delete subcommand、status subcommand を参照してください。
また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『ブレークポイントの設定および削除』も参照してください。
fd サブコマンド
fd [ raw ] [ start [ end ] ]
fd サブコマンドは、ファイル・ディスクリプター情報を表示します。 raw オプションを使用すると、出力はロウの 16 進数フォーマットで表示されます。 その他のオプショナル引数には、start および end インデックスがあります。 インデックスが与えられないと、使用できるすべてのファイル・ディスクリプター についての情報が表示されます。1 つのインデックスを使用すると、1 つの ファイル・ディスクリプターが表示され、2 つのインデックスを使用すると その範囲に含まれるファイル・ディスクリプターが表示されます。
例
- すべてのファイル・ディスクリプターについての情報を 16 進数で表示するには、次のように入力します。
fd raw
- 範囲 3 から 5 のファイル・ディスクリプターについての情報を表示するには、
次のように入力します。
fd 3 5
file サブコマンド
file [ File ]
file サブコマンドは、現行ソース・ファイルを File パラメーターにより指定されたファイルに変更します。 ただし、そのファイルへの書き込みは実行しません。 File パラメーターは、ファイルへの絶対パス名を指定します。File パラメーターにパスを指定しないと、 dbx プログラムは use パスを探すことによりファイルを見つけようとします。 File パラメーターを指定しないと、 file サブコマンドは現行ソース・ファイル名を表示します。 また、パスが認識されていれば、file サブコマンドはファイルの絶対パス名または相対パス名を表示します。
例
- 現在のソース・ファイルを、main.c ファイルに変更するには、
次のように入力します。
file main.c
- 現在のソース・ファイル名を表示するには、次のように入力します。
ファイル
func サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『現在のファイルまたはプロシージャーの変更』、および『現在のファイルの表示』も参照してください。
frame サブコマンド
frame [ num ]
frame サブコマンドは、現行関数を指定されたスタック・フレーム番号 num に対応する関数に変更します。
現行関数は、名前の解決に使用します。スタック・フレームの番号付けは、現在アクティブな関数のスタック・フレームから始まります (現在アクティブな関数フレームの番号は常に 0
となります)。n 個のフレームがある場合、main 関数のフレームの番号は n-1
になります。フレーム番号を指定しなかった場合は、現行フレームに関連した関数に関する情報が表示されます。
例
- フレーム番号 2 に移動するには、次のように入力します。
frame 2
- スタック上の現行関数を表示するには、次のように入力します。
frame
up サブコマンドおよび down サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『現在のファイルまたはプロシージャーの変更』および『スタック・トレースの表示』も参照してください。
func サブコマンド
func [ Procedure ]
func サブコマンドは、 現行関数を Procedure パラメーターにより指定されたプロシージャーまたは関数に変更します。 Procedure パラメーターを指定しないと、デフォルトの現行関数が表示されます。 現行関数を変更すると、現行ソース・ファイルが新しい関数が入ったファイルに暗黙的に変更されます。 ネーム・レゾリューションに使用される現行有効範囲も変更されます。
例
- 現行関数を、do_count プロシージャーに
変更するには、次のように入力します。
func do_count
- 現行関数名を表示するには、次のように入力します。
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 オプションを使用すると、pre
、parent
、child
の
atfork ハンドラーとして登録されているルーチンの名前が表示されます
(POSIX 規則に準拠しない atfork ハンドラーの場合は、それぞれの引数とともに)。
cancel_cleanup オプションは、
特定の pthread を指定するオプショナル
pthread id パラメーター、またはすべての
pthread を指定する all とともに指定されて、すべての登録済み
取り消しクリーンアップ・ハンドラーを表示させます。
どちらも指定しない場合、現行の
pthread の取り消しクリーンアップ・ハンドラーがあれば、それが表示されます。
例
- すべての登録済み atfork ハンドラーに関する情報を表示するには、次のように入力します。
handler atfork
- 現行 pthread の登録済み取り消しクリーンアップ・ハンドラーについての情報を表示するには、
次のように入力します。
handler cancel_cleanup
$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 サブコマンドとその簡単な説明を表示します。 |
例
- 使用可能なすべての dbx サブコマンドとトピックを表示するには、
次のように入力します。
help
- dbx サブコマンド、
list の説明を表示するには、次のように入力します。
help list
- dbx トピック、
set_variables の説明を表示するには、
次のように入力します。
help set_variables
ignore サブコマンド
ignore [ SignalNumber | SignalName ]
ignore サブコマンドは、指定するシグナルがアプリケーション・プログラムに送信される前に、 そのシグナルのトラッピングを停止します。このサブコマンドは、 デバッグ中のアプリケーション・プログラムが割り込みなどのシグナルを処理する場合に有効です。
トラップされるシグナルは、以下のいずれかの方法で指定できます。
- 番号。SignalNumber パラメーターを使用。
- 名前。SignalName パラメーターを使用。
シグナル名は、大文字と小文字の区別はありません。SIG プレフィックスはオプションです。
SignalNumber パラメーターおよび SignalName パラメーターを指定すると、デフォルトとして、SIGHUP、SIGCLD、SIGALRM、SIGKILL を除くすべてのシグナルがトラップされます。 dbx デバッグ・プログラムは、 デバッガーの外側のプロセスから発生した SIGTRAP シグナルを、 無視することはできません。引数を指定しない場合は、現在無視されているシグナルのリストが表示されます。
例
アプリケーション・プログラムに送信されるアラーム・クロック・タイムアウト・シグナルを dbx で無視させるには、 次のように入力します。
ignore alrm
catch サブコマンドのセクションを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『シグナルの処理』も参照してください。
kthread サブコマンド
kthread [ raw ] [ info | ru ] [ tid ]
kthread サブコマンドは、カーネル・スレッドについての情報を表示します。
raw オプションを使用すると、より読みやすいフォーマットで表示できるかどうかにかかわらず、すべての出力が 16 進数で表示されます。引数を使用しないと、すべてのカーネル・スレッドについての要約情報が印刷されます。
数字スレッド ID を提供すると、dbx コマンドは単一スレッドについての情報を示します。また、info オプションを使用すると、ユーザー・スレッド構造から、
スレッドについてのより詳細な出力が出されます。
ru オプションは、ti_ru
データ・メンバーを
表示します。この中には、リソース使用情報が入っています。
ユーザー・スレッドの詳細については、thread subcommand を参照してください。
例
- 現在実行しているスレッドについての情報を検出するには、
まずコマンド・ラインに以下を入力することによって、
すべてのスレッドについての情報を入手してください。
dbx コマンドがプロセスを停止する直前に実行していた (または実行可能だった) スレッドはアスタリスクでマークされています。その出力に基づいて正しいスレッド ID を選択し、入力します。kthread
kthread info tid
- すべてのスレッドについてのリソース情報を
16 進数で表示するには、次のように入力します。
kthread raw ru
limitbp サブコマンド
limitbp ( bp1, Limit ) [ ( bp2, [ + ] Limit ) … ]
limitbp サブコマンドは、ブレークポイントが指定された回数実行された場合に限りデバッグ・プログラムの実行を停止するように dbx コマンドに指示します。 制限値の前に「+」文字がある場合は、そのイベントの制限値がサブコマンドに指定された制限値と、イベントが既に実行された回数の合計に変更されます。すなわち、dbx コマンドは、limitbp サブコマンドが既に実行された後に、指定された Limit だけブレークポイントを実行する場合にデバッグ・プログラムの実行を停止します。
例
- ブレークポイント
1
を10
回実行する場合にデバッグ・プログラムの実行を停止するように dbx コマンドに指示するには、次のように入力します。limitbp (1, 10)
- ブレークポイント
1
を15
回実行するか、またはブレークポイント2
を20
回実行する (あるいはその両方) 場合にデバッグ・プログラムの実行を停止するように dbx コマンドに指示するには、次のように入力します。limitbp (1, 15) (2, 20)
- limitbp サブコマンドが実行された後に、ブレークポイント
1
を20
回実行する場合にデバッグ・プログラムの実行を停止するように 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 行目から 10 行目までを表示するには、次のように入力します。
list 1,10
- main プロシージャーの前後を、
10 行、
すなわち、$listwindow 行分表示するには、次のように入力します。
list main
- 現在行の前後の 11 行を表示するには、次のように入力します。
list $-5,$+5
- 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)
- 特定のアドレスに対応するソース行を表示することができます。例えば次のとおりです。
(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 <=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 | リストを開始するソース行を指定します。 |
例
- 次の 10 個の命令、
すなわち $listwindow 個の命令を表示するには、
次のように入力します。
listi
- ソース行の 10 行目以降のマシン・インストラクションを表示するには、
次のように入力します。
listi at 10
- sample.c ファイルのソース行の、
5 行目以降のマシン・インストラクションを表示するには、
次のように入力します。
listi at "sample.c":5
- アドレス 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
引数を使用すると、
フリー・スペース・ノードの選択をさらに狭めることができます。
malloc address
アドレスを指定した malloc サブコマンドにより、アドレスのノード詳細が表示されます。このアドレスは、割り当てられたノードまたはフリー・ノードの開始アドレスである必要はありません。
フラグ
項目 | 説明 |
---|---|
> File | 指定したファイルに出力をリダイレクトします。 |
詳しくは、「プログラミングの一般概念: プログラムの作成およびデバッグ」の『malloc サブシステムを 使用したシステム・メモリーの 割り当て』を参照してください。
map サブコマンド
map { [Format] [ entry ModuleNumber [ , ModuleNumber ] | Address | SymbolName ] [for $tthreadnumber] [ > File ] }
- ModuleNumber パラメーターを使用して、 単一エントリーを指定する方法。
- コンマで区切った 2 つの ModuleNumber パラメーターを使用して、 エントリーの範囲を指定する方法。
- Address パラメーターを使用して、 ロードされているモジュールに解決されるアドレスを指定する方法。
- SymbolName パラメーターを使用して、 ロードされているモジュールに解決されるシンボル名を指定する方法。
上記のいずれも指定しないで呼び出されると、map サブコマンドは、 そのアプリケーションのロードされたすべての部分についての情報を表示します。
項目 | 説明 |
---|---|
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 | スレッド番号を指定します。 |
例
- ロードされたすべてのモジュールを省略モードでリストするには、次のように入力します。
map abbr
- ロードされたモジュール 3 から 5 を詳細モードでリストするには、次のように入力します。
map verbose entry 3,5
- アドレス
0x20001000
を含むロードされたモジュールをリストするには、次のように入力します。map 0x20001000
- 変数
example
を含むロードされたモジュールをリストするには、次のように入力します。map example
- ロードされたモジュールをスレッド 2 のモジュールの TLS データ情報とともに通常モードでリストするには、次のように入力します。
map normal for $t2
詳しくは、$mapformat 内部変数を参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『dbx によるマシン・レベルのデバッグ』も参照してください。
move サブコマンド
move SourceLine
move サブコマンドは、次に表示される行を、 SourceLine パラメーターで指定した行に変更します。 このサブコマンドは、@ (アットマーク) 変数の値を変更します。
SourceLine 変数は、整数として、 または : (コロン) および整数が後ろに続くファイル名文字列として指定できます。
例
- 次に表示される行を 12 行目に変更するには、
次のように入力します。
move 12
- 次に表示される行を、
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 | マルチプロセス・デバッグを使用不可にします。 |
例
- マルチプロセス・デバッグの状況を確認するには、
次のように入力します。
multproc
- マルチプロセス・デバッグを使用可能にするには、
次のように入力します。
multproc on
- マルチプロセス・デバッグを使用不可にするには、
次のように入力します。
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 変数でブロックされるユーザー・スレッドをリストします。 |
フラグ
項目 | 説明 |
---|---|
lock | ロックされている mutex に関する情報を表示します。 |
unlock | ロックされていない mutex に関する情報を表示します。 |
thnum | 特定のスレッドが保持するすべての mutex の情報を表示します。 |
utid | ユーザー・スレッド ID に一致するユーザー・スレッド ID をもつユーザー・スレッドが保持する、 すべての mutex の情報を表示します。 |
例
- すべての mutex に関する情報を表示するには、
次のように入力します。
mutex
- すべてのロック状態の mutex に関する情報を表示するには、
次のように入力します。mutex lock
- 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
- スレッド 1 が保持するすべての mutex の情報を表示するには、次のように入力します。
mutex thnum 1
- 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 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。
例
- 次のソース行まで実行を継続するには、次のように入力します。
next
- 現行ソース行の次から数えて 3 番目のソース行まで実行を継続するには、
次のように入力します。
next 3
cont サブコマンド、 goto サブコマンド、 nexti サブコマンド、 set サブコマンド、 および step サブコマンドを参照してください。
nexti サブコマンド
nexti [ Number ]
nexti サブコマンドは、 次の命令までアプリケーション・プログラムを実行します。 Number パラメーターは、nexti サブコマンドの実行回数を指定します。 Number パラメーターを指定しないと、nexti は 1 回だけ実行されます。
マルチスレッド・アプリケーション・プログラム内で nexti サブコマンドを使用すると、操作中にすべてのユーザー・スレッドが実行されますが、プログラムは実行中のスレッドが指定のマシン・インストラクションに達するまで実行を継続します。 実行中のスレッドのみを進行させる場合は、 set サブコマンドを使用して変数 $hold_next を設定します。 この変数を設定すると、実行中のスレッドがブロック化されているスレッドの 1 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。
例
- 次のマシン・インストラクションまで実行を続行するには、次のように入力します。
nexti
- 現在のマシン・インストラクションの次から数えて 3 番目のマシン・インストラクションまで実行を継続するには、
次のように入力します。
nexti 3
gotoi サブコマンド、 next サブコマンド、 set サブコマンド、および、 stepi サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『マシン・レベルでのプログラムの実行』も参照してください。
onceblock サブコマンド
onceblock [ uninit | done ]
onceblock サブコマンドは、pthread_once ルーチン を使用して登録された初期設定コードのブロックについての情報を表示します。 引数を指定しない場合は、すべての登録済み once block についての情報が表示されます。 オプションの uninit および done のフラグは、それぞれ、実行されていない、または、 既に実行された once block のみを表示します。ただし、数字の once ID を指定した場合は、単一の once block についての情報が表示されます。
ON
に設定しておく必要があります。
同様に、コア・ファイルのデバッグで、プロセスの実行時にこの変数が ON になっていなかった場合は、onceblock サブコマンドは情報を取得することができません。例
- どの once block もまだ実行されていないかどうかを検出するには、次のように入力します。
onceblock uninit
plugin サブコマンド
plugin [ Name [ Command ] ]
plugin サブコマンドは、Command パラメーターにより指定されたコマンドを、Name パラメーターで指定されたプラグインに渡します。パラメーターを指定しないと、使用可能なすべてのプラグインの名前が表示されます。
例
- 使用可能なすべてのプラグインをリストするには、次のように入力します。
plugin
- 「sample」という名前のプラグインのサブコマンド「help」を開始するには、次のように入力します。
plugin sample help
- 「
xyz
」という名前のプラグインのサブコマンド「interpret 0x20000688
」を開始するには、次のように入力します。plugin xyz interpret 0x20000688
pluginload サブコマンド、および pluginunload サブコマンドを参照してください。 また、「プログラミングの一般概念」の『dbx プラグイン・フレームワーク用の開発』のセクションも参照してください。
pluginload サブコマンド
pluginload File
例
/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 パラメーターにより指定されたプロシージャーを実行し、 そのプロシージャーの戻り値を表示します。指定されたパラメーターはプロシージャーに渡されます。
例
- x の値と、
y の値を、2 ビット左にシフトして表示するには、
次のように入力します。
print x, y << 2
- 引数 0 で、
sbrk ルーチンを呼び出すことにより戻される値を表示するには、
次のように入力します。
print sbrk(0)
assign サブコマンド、 call サブコマンド、および、 set サブコマンドを参照してください。
printbp サブコマンド
printbp [ bp1 ] [ bp2 ] ... | all
printbp サブコマンドは、各ブレークポイントまたはすべてのサブコマンドが実行された回数、およびブレークポイントの制限の詳細 (制限が設定されている場合) を印刷するように dbx コマンドに指示します。
例
- ブレークポイント
1
が実行された回数、および設定された制限の詳細を印刷するように dbx コマンドに指示するには、次のように入力します。printbp 1
- ブレークポイント
1
と2
が実行された回数を印刷し、ブレークポイント1
と2
を実行できる回数を制限する (制限が設定されている場合) ように dbx コマンドに指示するには、次のように入力します。printbp 1, 2
- すべてのブレークポイントが実行された回数、およびブレークポイントの制限の詳細 (該当する場合) を印刷するように dbxコマンドに指示するには、次のように入力します。
printbp all
proc サブコマンド
proc [ raw ] [ cred | cru | ru | sigflags | signal ]
proc サブコマンドは、このプロセスについての情報を表示します。
raw オプションを使用すると、もっと読みやすい
方式で値を解釈することはせず、出力をロウ
16 進数で表示します。
追加の引数を指定せずに proc サブコマンドを使用すると、
このプロセスについての一般情報が、
ユーザー・プロセス・データ構造に保管されているとおりに出力されます。
cred オプションは、pi_cred
データ・メンバーの
内容を表示します。これは、プロセスのクリデンシャルを記述するものです。
cru と ru のオプションは、
データ・メンバー pi_cru
と pi_ru
をそれぞれ表示します。
これらには、リソース使用情報が入っています。
sigflags と signal のオプション
は、pi_sigflags
と pi_signal
のデータ・メンバー内に
入っているとおりに、現行のシグナルの状況と登録済みのシグナル・ハンドラーに関する情報を表示します。
例
- 現行プロセス (またはコア・ファイル) についてのリソース使用について、
ロウ 16 進数で表示するには、次のように入力します。
proc raw ru
- シグナル・ハンドラーの情報を表示するには、次のように入力します。
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 サブコマンドをオプションなしで使用すると、現行スレッドのレジスターが表示されます。
フラグ
項目 | 説明 |
---|---|
>File | 指定したファイルに出力をリダイレクトします。 |
set サブコマンド、 および unset サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『マシン・レジスターの使用』も参照してください。
例
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 がある場合は、それに関係する情報のみが表示されます。
ON
に設定して実行しているデバッグ・プロセスにのみ役立ちます。
これらの環境変数の中には、 AIXTHREAD_MUTEX_DEBUG、
AIXTHREAD_COND_DEBUG、 AIXTHREAD_RWLOCK_DEBUG、 AIXTHREAD_READ_OWNER
および AIXTHREAD_WAITLIST_DEBUG があります。
ライブ・プロセスのデバッグ中にこれらの変数がオンになっていない場合、またはデバッガー・コア・ファイルの生成時にこれらの変数がオンになっていなかった場合は、resource サブコマンドは、より少ない情報しか検索できないか、または情報をまったく検索できません。
これらの機能は、使用するとパフォーマンスが低下するおそれがあるので、
デバッグの目的にだけ活動化するようにお勧めします。例
- 現行の pthread が何らかのリソースを保持しているか確認するには、
次のように入力します。
resource owner
- いずれかの pthreads が待機しているリソースを表示するには、
次のように入力します。
resource waiter all
return サブコマンド
return [ Procedure ]
return サブコマンドは、 Procedure パラメーターにより指定されたプロシージャーに戻るまで、アプリケーション・プログラムを実行させます。 Procedure パラメーターを指定しないと、 現行プロシージャーが戻ったときに実行が停止します。
例
- 呼び出し側のルーチンまで実行を継続するには、次のように入力します。
return
- 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[#] | 読み取りでのスレッドのブロッキングを示します。 # は、読み取りでのスレッドのブロッキングの合計数を示します。 |
フラグ
項目 | 説明 |
---|---|
read | 状況が読み取りモードにあるすべての rwlock に関する情報を表示します。 |
write | 状況が書き込みモードにあるすべての rwlock に関する情報を表示します。 |
例
- すべての rwlock に関する情報を表示するには、次のように入力します。
rwlock
出力は以下のようになります。
rwl flag_value owner status $rwl 1 $t1 write rsleeps[ 0]: wsleeps[ 0]:
- 書き込みモードにあるすべての 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 に追加します。 |
例
引数 blue と 12 を指定してアプリケーションを実行するには、 次のように入力します。
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 名は |
$compact_bt_string | スタック・トレースに出力できる関数引数ストリングの文字数の限度を指定します。
指定される限度は、4 から 128 までの範囲の正整数であることが必要です。
この変数が、限度となる値を指定せずに設定された場合、出力できるデフォルトの文字数は 8 文字です。 この変数が設定され、ストリングが指定された限度より 4 文字以上長かった場合、dbx コマンドはスタック・トレースに元のストリングのうちの指定された文字数を出力し、その直後に 3 つのピリオド (...) を続けます。 例えば、ストリングが string_example (長さが 14 文字) で、指定された限度が 5 の場合、ストリングは |
$deferevents | 据え置きイベント機能をオンにします。 |
$display_address_name | メンバーの変数 ID、および dbx コマンドを使用する一連のメモリー・アドレスを検査する際にその ID が占有するメモリー・アドレスを表示します。 |
$expandunions | 可変レコードまたは共用体の各部分の値を表示します。 |
$frame | スタック・トレースを実行し、ローカル変数にアクセスするために、 $frame の値により指定されたアドレスが指し示すスタック・フレームを使用します。 |
$hexchars | 文字を 16 進数値で表示します。 |
$hexin | アドレスを 16 進数で解釈します。 |
$hexints | 整数を 16 進数で表示します。 |
$hexstrings | 文字ポインターを 16 進数で表示します。 |
$hold_next | cont、next、nexti、および step の各サブコマンド実行中に、 実行中のスレッドを除くすべてのスレッドを保留します。 この変数を設定すると、実行中のスレッドがブロック化されているスレッドの 1 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。 |
$ignoreifhandler | ユーザーのプログラムが、登録済みハンドラーを持つシグナルを受信したときに、停止しません。 |
$ignoreload | ユーザーのプログラムが load、 unload、または loadbind サブルーチンを実行したときに、停止しません。 |
$ignorenonbptrap | ユーザーのプログラムが、非ブレークポイント・トラップ命令を検出し、登録済み SIGTRAP ハンドラーを持っているときに、停止しません。 |
$instructionset | デフォルトの逆アセンブリー・モードを指定変更します。
次のリストに、Expression パラメーターに使用できる値を示します。
Expression パラメーターに値を指定しないと、 dbx プログラムはデフォルトの逆アセンブリー・モードを使用します。 |
$java | 設定すると、以下の変数も設定されて、dbx コマンドが Java アプリケーションをデバッグするモードになります。
設定解除すると、以下の変数も設定解除されます。
|
$listwindow | パラメーターを指定しないで list サブコマンドを使用したときに、 関数の前後をリストする際の行数およびリストの行数を指定します。デフォルトは 10 行です。 |
$mapaddrs | マッピング・アドレスを開始します。$mapaddrs を設定解除すると、 アドレスのマッピングが停止します。 |
$mapformat | map サブコマンドのためのデフォルトの出力モードを指定します。
|
$mnemonics | 逆アセンブル時に dbx プログラムにより使用されるニーモニックのセットを変更します。
Expression パラメーターに値を指定しないと、 dbx プログラムは指定した命令セットに最も近いニーモニックを指定します。 |
$noargs | where、up、down、および dump などのサブコマンドから引数を省略します。 |
$noflregs | registers サブコマンドから浮動小数点レジスターの表示を省略します。 |
$novregs | registers サブコマンドからベクトル・レジスターの表示を省略します。 |
$novsregs | registers サブコマンドからベクトル・スカラー・レジスターの表示を省略します。 |
$octint | アドレスを 8 進数で解釈します。 |
$octints | 整数を 8 進数で表示します。 |
$pretty | C および C++ の複合データ構造 (strut、union、array) の値を、print サブコマンドを使用して、pretty プリント 形式で表示します。
|
$print_dynamic | print/dump コマンドを使用して動的タイプの C++ オブジェクトを表示します。デフォルトでは、この変数は設定されていません。 |
$repeat | コマンドが入力されなかった場合に、前に入力されたコマンドを反復します。 |
$sigblock | ユーザーのプログラムへのシグナルをブロック化します。 |
$show_vft | 仮想関数テーブルを表示し、同時に print/dump コマンドを使用して C++ オブジェクトを印刷します。デフォルトでは、これは設定されていません。 |
$stack_details | where サブコマンドによって表示される各アクティブ関数またはプロシージャーのフレーム番号およびレジスター・セットを表示します。 |
$stepignore | デバッグ情報が使用できない別のルーチンを呼び出すソース行で
step/tstep サブコマンドを実行するときの dbx コマンドの動作方法を制御します。
この変数を使用すると、step
/tstep サブコマンドは、デバッグ情報が使用できない大規模なルーチンをステップオーバーすることができます。
次のリストに、Expression パラメーターに使用できる値を示します。
|
$trace_good_transaction | dbx コマンドに、トランザクション・メモリー (TM) のトランザクションが正常に完了するたびに次のメッセージを表示するよう指示します。
この変数はデフォルトでは使用不可になっているので、トランザクションが成功しても報告されません。 |
$thcomp | $thcomp が設定されているとき、 thread サブコマンド th- が表示する情報は圧縮フォーマットで表示されます。 |
$unsafeassign | assign ステートメントの指定範囲内の精密タイプ検査をオフにします。 $unsafeassign 変数が設定されている場合でも、 assign ステートメントの指定範囲内に異なるサイズのストレージ・タイプは設定されません。 |
$unsafebounds | 配列の添え字検査をオフにします。 |
$unsafecall | サブルーチンまたは関数呼び出しに渡される引数に対する精密な型チェックをオフにします。 |
$unsafegoto | goto サブコマンドの宛先検査をオフにします。 |
$vardim | バウンダリーが不明である配列を表示するときに使用するサイズを指定します。 デフォルト値は 10 です。 |
$xdisplay | multproc サブコマンドまたは screen サブコマンドで使用する X Window System のディスプレイ名を指定します。デフォルト値は、シェルの DISPLAY 変数の値です。 |
$unsafe 変数を指定すると、 dbx デバッグ・プログラムのエラー検出の有用性が制限されます。
例
- 表示する行数のデフォルト値を 20 に変更するには、
次のように入力します。
set $listwindow=20
- assign サブコマンドの型チェックを使用不可にするには、
次のように入力します。
set $unsafeassign
- POWER7 プロセッサーのマシン・インストラクションを逆アセンブルするには、次のように入力します。
set $instructionset="pwr7"
- IBM-eucCN コード・セットでエンコードされた文字列を表示するには、次のように入力します。
set $codepage="IBM-eucCN"
- スタック・トレースに表示される ID に 4 文字の限度、ストリングに 12 文字の限度を指定するには、次のコマンドを入力します。
set $compact_bt_ident=6 set $compact_bt_string=12
long_identifier
、long_variable_name_str
、recursive_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 行エディターの入力モードに入ります。
例
- vi 行エディターをオンにするには、次のように入力します。
set-o vi
または
set edit vi
sh サブコマンド
sh [ Command ]
sh サブコマンドは、 Command パラメーターにより指定されたコマンドをシェルに渡して実行します。 SHELL 環境変数は、使用するシェルを決定します。 デフォルトは sh シェルです。引数を指定しないと、シェルに制御が渡されます。
例
- ls コマンドを実行するには、
次のように入力します。
sh ls
- シェルにエスケープするには、次のように入力します。
sh
- 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 にリダイレクトします。 |
例
- すべてのユーザー定義のブレークポイント、トレース・ポイント、監視ポイント、ならびに残りのスレッド tskip カウントを表示するには、次のように入力します。
出力は以下のようになります。status
上記の出力例では、イベント 3 と 4 が使用不可であり、イベント 6 と 7 が据え置きです。[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
- すべてのユーザー定義のブレークポイント、トレース・ポイント、および監視ポイントを、関連した 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 つにより保持されているロックを待機する可能性があるため、 デッドロックが発生することがあります。
例
- ソース行の実行を 1 行継続するには、次のように入力します。
step
- ソース行の実行を 5 行継続するには、次のように入力します。
step 5
- 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 つ継続するには、次のように入力します。
stepi
- マシン・インストラクションの実行を 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 | ロード・モジュールをモニターすることを指定します。 |
例
- main プロシージャーの、
最初のステートメントで実行を停止するには、次のように入力します。
stop in main
- 変数 x の値が、
実行を開始してから 12 行目で変更された場合に実行を停止するには、
次のように入力します。
stop x at 12
- ファイル sample.c の、
5 行目で実行を停止するには、次のように入力します。
stop at "sample.c":5
- dbx コマンドが、
func1 内のサブルーチンを実行するたびに、
x の値を調べるには、次のように入力します。
stop in func1 if x = 22
- dbx コマンドが、
func1 の実行を開始するたびに、
x の値を調べるには、次のように入力します。
stopi at &func1 if x = 22
- Variable の値が変わったときに、
プログラムを停止させるには、次のように入力します。
stop Variable
- Condition が真であると評価されたときに、
常にプログラムを停止させるには、次のように入力します。
stop if (x > y) and (x < 2000)
- 次の例では、
アクティブ・イベントの表示方法および除去方法を示しています。
delete コマンドは、イベント ID によりイベントを削除します。 clear コマンドは、行番号に基づいてブレークポイントを削除します。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)
- スレッド $t5 で実行されるときにだけ、
func1 の先頭にブレークポイントを配置するには、
以下の等価のコマンドのどちらかを入力します。
またはstopi at &func1 if ($running_thread == 5)
bfth(func1, 5)
- いずれかのモジュールがロードまたはアンロードされたときにプログラムを停止するには、
次のように入力します。
stop on load
- モジュール
Module
がロードまたはアンロードされるときにプログラムを停止するには、 次のように入力します。stop on load "Module"
- モジュール
Module
のメンバーMember
がロードまたはアンロードされるときにプログラムを停止するには、 次のように入力します。stop on load "Module(Member)"
- 関数
getdata
内のプログラムが 3 回目に呼び出されたときにこれを停止するには、次のように入力します。stop in getdata {3}
addcmd サブコマンド、clear サブコマンド、delete サブコマンド、delcmd サブコマンド、disable サブコマンド、enable サブコマンド、limitbp サブコマンド、printbp サブコマンド、status サブコマンド、stopi サブコマンド、および trace サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『ブレークポイントの設定および削除』も参照してください。
stophwp サブコマンド
stophwp Address Size
- stophwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
- 単一の監視ポイントのみ設定できるというハードウェアの制限により、 stophwp および tracehwp で別のハードウェア監視ポイント・イベントを作成しようとすると、 アクティブな監視ポイント・イベントは矛盾するものとして動作することになります。そのため、新しいイベントを 作成する前に、前のイベントは削除する必要があります。また、アクティブなソフトウェアの監視ポイント の存在 (stop および trace サブコマンドの呼び出しにより 作成された) はハードウェアの監視ポイントのパフォーマンス向上を打ち消すため、 これらのタイプのイベントも矛盾するものとして動作するので、 ハードウェアの監視ポイントを作成する前に削除する必要があります。
例
- アドレス 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 | マシン・インストラクションのアドレスを指定します。 |
例
- アドレス 0x100020f0 で実行を停止するには、
次のように入力します。
stopi at 0x100020f0
- アドレス 0x100020f0 の内容が変更されたときに、
実行を停止するには、次のように入力します。
stopi 0x100020f0
- アドレス 0x100020f0 の内容が、
スレッド $t1 により変更されたときに実行を停止するには、
次のように入力します。
stopi 0x200020f0 if ($running_thread == 1)
stop サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『dbx によるマシン・レベルのデバッグ』も参照してください。
thdata サブコマンド
thdata [ $tthreadnumber [ all | key1 … ] … ] | [ all ]
コマンド | アクション |
---|---|
thdata [ all ] | すべての使用可能なスレッドのキーすべてに関連するスレッド固有データを印刷します。 |
thdata $t1 [ all ] | $t1 スレッドのすべてのキーに関連付けられたスレッド固有データを印刷します。 |
thdata $t1 key1 key2 | $t1 スレッドのキー key1 および key2 に関連付けられたスレッド固有データを印刷します。 |
thdata $t1 key1 key2 $t2 key1 | $t1 スレッドのキー key1 および key2 に関連付けられたスレッド固有データ、 および $t2 スレッドのキー key1 に関連付けられたスレッド固有データを印刷します。 |
例
- 現行スレッドに対してすべての使用可能なキーに関連付けられたデータを
印刷するには、次のように入力します。
(dbx) thdata $t1 Thread : 1 Key : 1 Data pointer : 0x200f7a28 Key : 2 Data pointer : 0x200f7aa8 Key : 3 Data pointer : 0x200f7ac4 (dbx)
- 複数のスレッドと複数のキーに対して、関連付けられたデータを
印刷するには、次のように入力します。
(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 | カーネル・スレッドの状態を示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。 この値は、それぞれ実行中、待機中、延期、終了を示す run、wait、 susp、term のいずれかです。 |
wchan | カーネル・スレッドが待機中またはスリープ中のイベントを示します (ユーザー・スレッドがカーネル・スレッドに付加されている場合)。 |
state-u | ユーザー・スレッドの状態を示します。 可能な状態は、running、blocked、terminated のいずれかです。 |
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 |
|
項目 | 説明 |
---|---|
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 デバッグ・プログラムの print、registers、 および where の各サブコマンドは、いずれも現行スレッドのコンテキストに沿って機能します。 現行スレッドがカーネル・モードになっている場合は、 registers サブコマンドはレジスターを表示できません。
thread サブコマンドの 3 番目のフォーマットは、 スレッドの実行の制御に使用します。スレッドは、hold フラグを使用して保留にするか、 unhold フラグを使用して解放することができます。 保留にされているスレッドは、解放されるまで再開されません。
フラグ
項目 | 説明 |
---|---|
現行 | 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 状態のスレッドを表示します。 |
例
- 待機状態のスレッドに関する情報を表示するには、
次のように入力します。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
- 複数の、任意のスレッドについて情報を表示するには、次のように入力します。
出力は以下のようになります。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
- スレッド 4 を現行スレッドにするには、次のように入力します。thread current 4
- スレッド番号 2 を保留にするには、次のように入力します。thread hold 2
- 待機状態のスレッドについて情報を 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
- 複数の、任意のスレッドについて情報を 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 サブコマンドは繰り返されません。
例
- 実行中のスレッドの実行を次のソース行まで継続するには、次のように入力します。
tnext
- 実行中のスレッドの実行を現行ソース行から数えて 3 番目のソース行まで継続するには、次のように入力します。
tnext 3
tnexti サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
tnexti サブコマンド
tnexti [Number]
tnexti サブコマンドは、実行中のスレッドを次の命令まで実行します。 Number パラメーターは、tnexti サブコマンドの実行回数を指定します。 Number パラメーターを指定しない場合は、tnexti は 1 回だけ実行されます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。
この操作時にすべてのスレッドが実行されます。
この操作時にブレークポイントをキャッチするには、$catchbp
dbx 変数を設定します。
$catchbp
変数が設定されている場合、別のスレッドのブレークポイントに達すると、残りの回数については tnexti サブコマンドは繰り返されません。
例
- 実行中のスレッドの実行を次のマシン・インストラクションまで継続するには、次のように入力します。
tnexti
- 実行中のスレッドの実行を現行マシン・インストラクションから数えて 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 サブコマンドを使用して、トレースを使用可能にすることおよび使用不可にすることができます。
ModuleName(MemberName)
ModuleName パラメーターを指定しないで on load フラグを使用すると、dbx コマンドはすべてのモジュールのロードとアンロードをトレースします。
デフォルトでは、トレースはプロセス・ベースで行われます。 スレッド・ベースのトレースを行うには、 例 8 に示す条件でスレッドを指定します。
フラグ
項目 | 説明 |
---|---|
at SourceLine | トレースされる式を検索するソース行を指定します。 |
if Condition | トレースを開始する条件を指定します。トレースは、 if Condition が真のときにのみ開始されます。 |
in Procedure | トレースされるプロシージャーまたは変数の検索に使用するプロシージャーを指定します。 |
on load ModuleName | モニターするロード・モジュールを指定します。 |
例
printf
プロシージャーに対する各呼び出しをトレースするには、 次のように入力します。trace printf
- hello.c ファイルの、
22 行目の各実行をトレースするには、次のように入力します。
trace "hello.c":22
main
プロシージャー内の、 x 変数の変更をトレースするには、 次のように入力します。trace x in main
- データ・アドレス
0x2004000
をトレースするには、 次のように入力します。set $A=0x2004000 trace $A
注: tracei サブコマンドは、 アドレスをトレースするように設計されています。 - 指定した 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 }
- プロシージャーが呼び出されるたびに、あるいは戻されるたびに、
メッセージを表示することができます。プロシージャーが呼び出される場合は、
表示される情報には渡されたパラメーターと呼び出し側のルーチンの名前が含まれます。
プロシージャーが戻される場合は、情報には Procedure の戻り値が含まれます。
次に例を示します。
(dbx) trace sub [1] trace sub (dbx) run calling sub(s = "hello", a = -1, k = delete) from function main returning "hello" from sub
- プログラムが指定ソース行に達したときに、
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
- スレッド
$t1
により作成された、 x 変数の変更をトレースするには、次のように入力します。(dbx) trace x if ($running_thread == 1)
- すべてのモジュールのロードまたはアンロードをトレースするには、
次のコマンドを入力します。
trace on load
- モジュール
Module
のロードまたはアンロードをトレースするには、 次のコマンドを入力します。trace on load "Module"
- モジュール
Module
のメンバーMember
のロードまたはアンロードをトレースするには、 次のコマンドを入力します。trace on load "Module(Member)"
tracei サブコマンドも参照してください。
tracehwp サブコマンド
tracehwp Address Size
- tracehwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
- 単一の監視ポイントのみ設定できるというハードウェアの制限により、 stophwp および tracehwp で別のハードウェア監視ポイント・イベントを作成しようとすると、 アクティブな監視ポイント・イベントは矛盾するものとして動作することになります。そのため、新しいイベントを 作成する前に、前のイベントは削除する必要があります。また、アクティブなソフトウェアの監視ポイント の存在 (stop および trace サブコマンドの呼び出しにより 作成された) はハードウェアの監視ポイントのパフォーマンス向上を打ち消すため、 これらのタイプのイベントも矛盾するものとして動作するので、 ハードウェアの監視ポイントを作成する前に削除する必要があります。
例
- アドレス
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 | プロシージャーを指定します。このプロシージャーがアクティブなときに、トレースが使用可能になります。 |
例
- 実行された各命令をトレースするには、次のコマンドを入力します。
tracei
- アドレス
0x100020f0
の命令が、 実行されるたびにトレースするには、次のコマンドを入力します。tracei at 0x100020f0
main
プロシージャーがアクティブなときに、 メモリー位置0x20004020
の内容が変更されるたびにトレースするには、 次のコマンドを入力します。tracei 0x20004020 in main
- アドレス
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 サブコマンドを使用してください。
例
tskip 1
cont サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
tstep サブコマンド
tstep [Number]
tstep サブコマンドは、実行中のスレッドについて、現行ソース行から数えて指定数のソース行を実行します。 Number パラメーターは、tstep サブコマンドの実行回数を指定します。 Number パラメーターを指定しない場合は、tstep は 1 回だけ実行されます。 このサブコマンドは、システム・スコープ・スレッドでのみ開始できます。
$hold_next
が設定されている場合は、実行中のスレッド以外のすべてのスレッドが保留されます。$stepignore
変数を使用します。
$stepignore
変数を使用すると、tstep サブコマンドはデバッグ情報が使用できない大規模なルーチンを横切って次へ進むことができます。
例
- 実行中のスレッドの実行を 1 ソース行だけ継続するには、次のように入力します。
tstep
- 実行中のスレッドの実行を 5 ソース行だけ継続するには、次のように入力します。
tstep 5
- 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 マシン・インストラクションだけ継続するには、次のように入力します。
tstepi
- 実行中のスレッドの実行を 2 マシン・インストラクションだけ継続するには、次のように入力します。
tstepi 5
gotoi サブコマンド、tnexti サブコマンド、および tstep サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
tstop サブコマンド
tstop { in Procedure | [Variable] at SourceLine [ if Condition ] } [for $tthreadnumber]
- if Condition フラグが使用され、Condition が True である。
- in Procedure フラグが使用され、Procedure が呼び出された。
- at SourceLine フラグが使用され、SourceLine 行番号に達した。SourceLine 変数は、整数として、または : (コロン) と整数が続くファイル名文字列として指定できます。
スレッド・レベルのブレークポイントは、システム・スコープ・スレッドでのみ設定できます。 スレッド・レベルおよびプロセス・レベルのブレークポイントが同時に検出された場合、両方のブレークポイントが処理され、スレッド・レベルのブレークポイントが報告されます。スレッドが終了すると、そのスレッドに関連したイベントは削除されます。
フラグ
項目 | 説明 |
---|---|
at SourceLine | 行番号を指定します。 |
for $t threadnumber | スレッド番号を指定します。 |
if Condition | 条件 (例えば、true ) を指定します。 |
in Procedure | 呼び出されるプロシージャーを指定します。 |
例
- スレッド 2 の実行中に func プロシージャーの最初のステートメントで実行を停止するには、次のように入力します。
tstop in func for $t2
- 実行の行 12 で x 変数の値が変更されたときに現行スレッドの実行を停止するには、次のように入力します。
tstop x at 12
ttrace サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
tstophwp サブコマンド
tstophwp address size [for $t threadnumber]
tstophwp サブコマンドは、指定されたメモリー領域のスレッド・レベルのハードウェア監視ポイントを設定します。 プログラムは、指定されたスレッドの実行中にその領域の内容が変化したときに停止します。 指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルの監視ポイント・イベントは、システム・スコープ・スレッドにのみ設定できます。 スレッドが終了すると、そのスレッドに関連したイベントは削除されます。
- tstophwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
- 単一の監視ポイントのみ設定できるというハードウェアの制限により、tstophwp および ttracehwp を使用して別のハードウェア監視ポイント・イベントを作成しようとすると、アクティブなスレッド監視ポイント・イベントは矛盾するものとして動作することになります。 これを避けるには、新しいイベントを作成する前に、前のイベントを削除する必要があります。 また、アクティブなソフトウェア監視ポイント (stop および trace サブコマンドの呼び出しにより作成された) が存在すると、ハードウェア監視ポイントのパフォーマンス向上が打ち消されるため、これらのタイプのイベントも、ハードウェア監視ポイントを作成する前に削除して、矛盾を回避する必要があります。
- プロセス・レベルの監視ポイントが存在する場合、スレッド・レベルの監視ポイントを持たないスレッドが、プロセス監視ポイントの位置を監視します。 スレッドにスレッド・レベルの監視ポイントがある場合、そのスレッドはスレッド監視ポイントの位置を監視します。
- スレッド・レベルのハードウェア監視ポイントとプロセス・レベルのハードウェア監視ポイントは、互いに矛盾せずに共存できます。
- 同じアドレスについてプロセス・レベルの監視ポイントとスレッド・レベルの監視ポイントが存在する場合、プロセス・レベルの監視ポイント・イベントが報告されます。
フラグ
項目 | 説明 |
---|---|
for $t threadnumber | スレッド番号を指定します。 |
例
スレッド 2 の実行中にアドレス 0x200004e8
で始まる 4 バイト・メモリー領域の内容が変化したときにプログラムを停止するには、次のように入力します。
tstophwp 0x200004e8 4 for $t2
ttracehwp サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
tstopi サブコマンド
tstopi { in Procedure | [Address] at Address [ if Condition ] } [for $tthreadnumber]
- if Condition フラグが使用され、Condition が True である。
- in Procedure フラグが使用され、Procedure が呼び出された。
- at Address フラグが使用され、Address に達した。
スレッド・レベルのブレークポイントは、システム・スコープ・スレッドでのみ設定できます。 スレッド・レベルのブレークポイントとプロセス・レベルのブレークポイントに同時に達した場合、両方のブレークポイントが処理され、スレッド・レベルのブレークポイントが報告されます。スレッドが終了すると、そのスレッドに関連したイベントは削除されます。
フラグ
項目 | 説明 |
---|---|
at Address | マシン・インストラクションのアドレスを指定します。 |
for $t threadnumber | スレッド番号を指定します。 |
if Condition | 条件を指定します。 |
in Procedure | 呼び出されるプロシージャーを指定します。 |
例
- スレッド 2 の実行中にアドレス
0x100020f0
で実行を停止するには、次のように入力します。tstopi at 0x100020f0 for $t2
- 現行スレッドの実行中に 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 | トレースされるプロシージャーまたは変数を検索するプロシージャーを指定します。 |
例
- スレッド 2 の実行中に printf プロシージャーへの各呼び出しをトレースするには、次のように入力します。
ttrace printf for $t2
- 現行スレッドの実行中に hello.c/ ファイルの行 22 の各実行をトレースするには、次のように入力します。
ttrace "hello.c":22
ttracei サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
ttracei サブコマンド
ttracei [Address] at Address [ if Condition ] } [for $tthreadnumber]
- if Condition フラグが組み込まれ、Condition が True である。
- at Address フラグが指定され、Address の命令が実行された。
スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルのトレースは、システム・スコープ・スレッドにのみ設定できます。 指定されたスレッドは、イベントの作成時に存在していなければなりません。スレッドが終了すると、それに関連したイベントが削除されます。
フラグ
項目 | 説明 |
---|---|
at Address | アドレスを指定します。このアドレスにある命令が実行されると、トレースが使用可能になります。 |
for $t threadnumber | スレッド番号を指定します。 |
if Condition | 条件を指定します。この条件が満たされると、トレースが使用可能になります。 |
例
- スレッド 3 の実行中にアドレス
0x100020f0
の命令が実行されるたびにトレースするには、次のように入力します。tracei at 0x100020f0 for $t3
- 現行スレッドによってアドレス
0x100020f0
の命令が実行されるたびにトレースするには、次のように入力します。tracei at 0x100020f0
ttrace サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『複数のスレッドを含むプログラムのデバッグ』を参照してください。
ttracehwp サブコマンド
ttracehwp address size [for $tthreadnumber]
ttracehwp サブコマンドは、指定されたメモリー領域に対してスレッド・レベルのハードウェア監視ポイントのトレースを設定します。 dbx デバッグ・プログラムは、指定されたスレッドの実行中にその領域の内容が変化したときにトレース情報を表示します。 指定されたスレッドは、イベントの作成と同時に存在していなければなりません。 スレッドが 1 つも指定されていない場合は、現行スレッドが使用されます。 スレッド・レベルの監視ポイント・イベントは、システム・スコープ・スレッドにのみ設定できます。 スレッドが終了すると、そのスレッドに関連したイベントは削除されます。
- ttracehwp サブコマンドが成功するかどうかは、ハードウェアに依存します。 この機能は、POWER630 および POWER4 以降でのみ使用可能です。
- 単一の監視ポイントのみ設定できるというハードウェアの制限により、tstophwp および ttracehwp を使用して別のハードウェア監視ポイント・イベントを作成しようとすると、アクティブなスレッド監視ポイント・イベントは矛盾するものとして動作することになります。 これを避けるには、新しいイベントを作成する前に、前のイベントを削除する必要があります。 また、アクティブなソフトウェア監視ポイント (stop および trace サブコマンドの呼び出しにより作成された) が存在すると、ハードウェア監視ポイントのパフォーマンス向上が打ち消されるため、これらのタイプのイベントも、ハードウェア監視ポイントを作成する前に削除して、矛盾を回避する必要があります。
- プロセス・レベルの監視ポイントが存在する場合、スレッド・レベルの監視ポイントを持たないスレッドが、プロセス監視ポイントの位置を監視します。 スレッドにスレッド・レベルの監視ポイントがある場合、そのスレッドはスレッド監視ポイントの位置を監視します。
- スレッド・レベルのハードウェア監視ポイントとプロセス・レベルのハードウェア監視ポイントは、互いに矛盾せずに共存できます。
- 同じアドレスについてプロセス・レベルの監視ポイントとスレッド・レベルの監視ポイントが存在する場合、プロセス・レベルの監視ポイント・イベントが報告されます。
フラグ
項目 | 説明 |
---|---|
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 です。
例
- 現行関数をスタックの上方へ 2 レベル移動するには、
次のように入力します。
up 2
- スタック上の現行関数を表示するには、次のように入力します。
up 0
down サブコマンドを参照してください。また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『現在のファイルまたはプロシージャーの変更』および『スタック・トレースの表示』も参照してください。
use サブコマンド
use [ { + | Directory | '['RegularExpression = NewPath']' } ... ]
use サブコマンドは、dbx デバッグ・プログラムがソース・ファイルを検索するときの検索先となるディレクトリーのリスト、 および適用されるパス・マッピングを設定します。 引数を指定せずに use サブコマンドを指定すると、 検索対象のディレクトリーと適用されるパス・マッピングの現行リストが表示されます。
@ (アットマーク) は、dbx プログラムに対して、 オブジェクト・ファイル内に絶対パス名の情報があればそれを検索するように指示する特殊ディレクトリーです。 @ という名前の相対ディレクトリーを検索する場合は、検索パスに ./@ を使用する必要があります。
use サブコマンドは、+ (正符号) を使用して、
検索対象となるディレクトリーのリストにディレクトリーまたはマッピングを追加します。+
は、use サブコマンドへの入力として指定される場合は、
ディレクトリーとマッピングの現行リストを表します。
現行リストの最後にディレクトリーまたはマッピングを付加するには、
新しいディレクトリーまたはマッピングの前に +
を指定する必要があります。
ディレクトリーを現行リストの先頭に追加するには、新しいディレクトリーまたはマッピングの後に +
を指定する必要があります。+ という名前のディレクトリーがある場合は、
そのディレクトリーの絶対パス名 (例えば、./+ または
/tmp/+ など) を指定します。
use サブコマンドは、[
と ]
(大括弧) で囲まれている文字列を解釈します。この大括弧の中には、
パス・マッピングとして =
(等号) が入っています。
これらのパス・マッピングは、特殊 @ ディレクトリーと一緒に使用されます。
これを使用すると、ソース・ファイルのディレクトリー構造全体がコンパイル後に再配置された場合に、ユーザーがソース・ファイルの場所を示すのがより簡単になります。
- リスト内のディレクトリーが、指定の順序で評価されます。
- リスト内のディレクトリーの評価時には、指定のファイルのためにディレクトリーが検索されます。そのディレクトリーにファイルが入っていて、 読み取り可能であるときは、このファイルが使用されます。
- 特殊 @ ディレクトリーの評価時に、1 つ以上のパス・マッピングが指定されていて、パス・マッピングの RegularExpression 部分がオブジェクト・ファイル内でファイルの絶対パス名情報の最初の n 文字に一致していて、パス・マッピングの NewPath 部分の置換によって読み取り可能ファイルが得られる場合は、このファイルが使用されます。
- 特殊 @ ディレクトリーの評価時に、パス・マッピングが指定されていないか、または一致がない場合、絶対パス名情報に対応するディレクトリーが検索されます。そのディレクトリーにファイルが入っていて、 読み取り可能であるときは、このファイルが使用されます。
- 複数のパス・マッピングから読み取り可能ファイルが得られる場合は 、RegularExpression が絶対パス名情報と 最も多い文字数 (1 ... n) で一致する (すなわち最も特定的な情報を持つ) パス・マッピングが適用され、 その結果のファイルが使用されます。
- 複数のパス・マッピングから読み取り可能ファイルが得られ、しかも、 パス・マッピングの特定の度合いが等しい場合は、 リストの最初に最も近いパス・マッピングが適用され、 その結果のファイルが使用されます。
例
- 検索されるディレクトリーのリストを、現行ディレクトリー (.)、
その親ディレクトリー (..)、および /tmp ディレクトリーに変更するには、次のように入力します。
use . .. /tmp
- 検索されるディレクトリーのリストを、現行ディレクトリー (.)、
コンパイル時にソース・ファイル格納場所であったディレクトリー (@)、
および ../source ディレクトリーに変更するには、次のように入力します。
use . @ ../source
- 検索されるディレクトリーのリストに、
/tmp2 ディレクトリーを追加するには、次のように入力します。
use + /tmp2
- 検索されるディレクトリーのリストの先頭に
/tmp3 ディレクトリーを追加するには、次のように入力します。
use /tmp3 +
- 絶対パス名情報が
/home/developer で始まるソース・ファイルが現在は
/mnt の下に配置されていることを示すには、
次のように入力します。
use + [/home/developer=/mnt]
- /home/developer で始まる絶対
パス名情報をもつファイルを、最初に
/latest から検索し、次にそのファイルがそこになければ、
/stable から検索するように
dbx プログラムに指示するには、次のように入力します。
use + [/home/developer=/latest] [/home/developer=/stable]
edit サブコマンド、 list サブコマンドも参照してください。
whatis サブコマンド
whatis Name
whatis サブコマンドは、Name パラメーターで指定した変数名、 プロシージャー名、または関数名を指定する Name の宣言を表示します。パラメーターは、 オプションとしてブロック名で修飾することができます。
例
- x 変数の宣言を表示するには、
次のように入力します。
whatis x
- main プロシージャーの宣言を表示するには、
次のように入力します。
whatis main
- main 関数内の、
x 変数の宣言を表示するには、次のように入力します。
whatis main.x
- 列挙型、構造、または共用体タグの宣言を表示するには、$$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 サブコマンドを参照してください。 また、 プログラミングの一般概念: プログラムの作成およびデバッグ の『スタック・トレースの表示』も参照してください。
例
- すべてのスレッドのスタックの詳細を表示するには、次のように入力します。
where all
- スレッド $t1、$t2、および $t3 のスタックの詳細を表示するには、次のように入力します。
where $t1 $t2 $t3
- スレッド $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 サブコマンドを使用して操作することはできません。
$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 です。