構文
adb [-h]
adb [-n|-o]
[-w] [-I path] kernelfile memfile
adb [-n|-o]
[-w] [-I path] kernelfile crashdir
adb [-n|-o]
[-w] [-I path] crashdir
adb [-n|-o]
[-w] [-I path] [objfile] [corefile]
adb [-n|-o]
[-w] [-I path] -P pid [execfile]
説明
adb コマンドは、プロセッサおよびオペレーティングシステムを実行するための基盤となるアーキテクチャに密接な、汎用デバッギングプログラムを実行します。
これを使用すると、ファイルを検査し HP-UX プログラムを実行するための制御された環境を得ることができます。
adb は、 現在のオブジェクトファイル として参照されるオブジェクトファイルと、 現在のメモリーファイル として参照されるメモリーファイルを、それぞれ
1 つだけ調査します。 - を引き数で指定すると、このいずれかのファイルを
NULL ファイル (中身がないファイル) とすることができます。 オブジェクトファイルとメモリーファイルは、次の引き数を使って指定します。
| kernelfile | | HP-UX カーネルです。通常は、 vmunix です。 |
| memfile | | /dev/mem または /dev/kmem です。 kernelfile を指定した場合、 memfile は kernelfile を実行している HP-UX システム上に存在するものとして扱われます。 /dev/mem は、PA-RISC
プラットフォームでのみサポートされます。 |
| crashdir | | HP-UX システムのクラッシュダンプを含むディレクトリです。 kernelfile を指定した場合、このディレクトリは kernelfile で作成されたものとして扱われます。 |
| objfile | | 通常は、実行可能なプログラムファイルです。 再配置可能オブジェクトファイルや、共有ライブラリファイル、DLKM
モジュールを指定することもできます。 * デフォルトの objfile は、 a.out です。 |
| corefile | | objfile の実行後に生成されたコアイメージファイルです。 デフォルトの corefile は、 core です。 |
| execfile | | adb がデバッグするプロセスのプロセス
ID (pid) に対応する実行可能ファイルです。 |
現在のオブジェクトファイルとは、 kernelfile、 crashdir 内の vmunix ファイル、 objfile、 または execfile です。 現在のオブジェクトファイルは、できればシンボルテーブルを含んでいるものにします。
シンボルテーブルが含まれていない場合でもファイルは検査できますが、 adb のシンボリック機能は使えません。
現在のメモリーファイルとは、 memfile、 crashdir 内のシステムメモリーダンプ、 corefile、 またはプロセス pid のメモリーです。
adb への要求は標準入力から読み取られ、 adb * は標準出力に対して応答します。 -w フラグが存在すると、 objfile が必要に応じて作成され、 adb を使って修正できるように読み書きオープンされます。 adb は
QUIT を無視します。 INTERRUPT により、次の adb コマンドに戻ります。
adb の操作モードには、下位互換モードと通常モードの
2 種類があります。 PA-RISC システムでは、下位互換モードがデフォルトです。
Itanium システムでは、通常モードがデフォルトです。
adb は、起動時に $HOME/.adbrc ファイルから adb コマンドを実行します。
adb で MxN プロセスまたはコアをデバッグする場合、MxN
デバッグライブラリ libmxndbg が必要になります。アプリケーションタイプに応じて、 /usr/lib/libmxndbg.sl (32
ビット PA-RISC の場合)、 /usr/lib/libmxndbg64.sl (64
ビット PA-RISC の場合)、または /usr/lib/hpux32/libmxndbg.so (Itanium(R) ベース
システムの場合) のいずれかがロードされます。該当するライブラリが指定されたパスに存在しない場合は、シェル変数 ADB_PATHMXNDBG に正しいライブラリが存在する場所を設定します。
オプション
adb は、次のコマンド行 オプション を受け付けます。 これらのオプションは、ファイル引き数の前であれば、任意の順序で指定できます。
| -h | | 使用方法の概要を表示して終了します。 このオプションを使うと、他のオプションと引き数はすべて無視されます。 |
| -i | | $HOME/.adbrc を無視します。 |
| -I path | | path は、 < または << (下記を参照)
で指定されたファイルを検索するディレクトリのリストを指定します。
このリストの構文は PATH シェル変数と同じで、意味も似ています。
デフォルトは、 .:/usr/lib/adb です。 |
| -n | | 通常モードを指定します。 Itanium システムでは、このモードがデフォルトです。
このオプションは、 -o オプションと同時に使うことはできません。
最後に指定した方が有効になります。 |
| -o | | 下位互換モードを指定します。 PA-RISC システムでは、このモードがデフォルトです。
このオプションは、 -n オプションと同時に使うことはできません。
最後に指定した方が有効になります。 |
| -P pid | | プロセス ID が pid のプロセスをトレース対象プロセスとして指定します。 ttrace(2) を参照してください。 このオプションは、 adb の制御下で実行対象とならなかったプロセスをデバッグするのに役立ちます。 |
| -w | | このオプションを指定すると、 adb のファイル書き込みコマンドが有効になります。 Objfile は、読み書き両用でオープンされます。 カーネルメモリーファイルの場合は、 memfile への書き込みも有効になります。 |
次の adb コマンド行オプションは廃止され、現在は不要です。
(これらのオプションを使った場合は、警告が表示されます。)
| -k | | 以前、HP-UX クラッシュダンプや /dev/mem を受け付けるために、 adb ではこのオプションが必要でした。 |
| -m | | 以前、複数の HP-UX クラッシュダンプを受け付けるために、 adb ではこのオプションが必要でした。 |
adb への要求は、従来の形式と新しい形式に従います。
従来形式
[address] [ ,count ] [command-char] [command-arguments] [;]
新しい形式
keyword [command-arguments] [;]
従来の形式は、下位互換モードでだけ利用できます。
address を指定すると、 dot には address が設定されます。 dot は、現在のアドレスを示す adb 状態変数です。 dotincr は、 adb が書式文字列に添ってステップ実行した場合に dot への増分値を示す状態変数です。
下記の 『「書式文字列」』 を参照してください。
初めに、 dot と dotincr には 0 が設定されます。
ほとんどのコマンドについては、 count はコマンドの実行回数を指定します。 count のデフォルト は 1 です。 address および count は式です。
アドレスの解釈は使用される文脈によって異なります。 サブプロセスがデバッグされている場合、アドレスは、サブプロセスのアドレス空間で解釈されます
(詳細については、下記の 『「アドレスマップ」』 を参照してください)。
command-char と command-arguments は、実行するコマンドを指定します。 下記の 『「コマンド」』 を参照してください。
式
adb の式はすべて 64 ビットの符号なし整数として扱われ、式も
64 ビットの符号なし整数として評価されます。 次の基本的な要素がサポートされています。
| integer | | 数値。 プレフィックス 0 (ゼロ)、 0o、
および 0O は、8 進数と解釈します。 プレフィックス 0t、 OT、 0d、
および 0D は、10 進数と解釈します。 プレフィックス 0x および 0X は、16
進数と解釈します。 プレィックス 0b および 0B は、2
進数と解釈します。 このため、 020 = 0d16 = 0x10 = 0b1000 =
16 になります。 プレフィックスがなければ、デフォルトの基数が使われます。 d コマンドを参照してください。
基数のデフォルトは、16 進数です。 最上位桁が英文字でない 16 進数には、必ず 0x (または、 0X)
プレフィックスを付けてください。 |
| 'cccccccc' | | 8 文字までの ASCII 値。 8 文字を超えて指定すると、値は未定義となります。
バックスラッシュ (\) を使用すると、一重引用符
(') をエスケープできます。 |
| $register | | レジスタ。 レジスタの値は、現在のメモリーファイルに対応するレジスタセットから取ります。
レジスタ名は、実装により異なります。 r コマンドを参照してください。 |
| symbol | | symbol は、先頭が数字でない一連の大文字または小文字の英字、アンダースコア
(_)、 または数字です。 バックスラッシュ (\)
を使用すると、それ以外の文字をエスケープすることができます。 symbol の値は、現在のオブジェクトファイルのシンボルテーブルからとります。 |
| variable | | 変数名は、$ から始まる英数字からなります。 ターゲットプロセッサのレジスタの名前は、変数名として予約されており、式の中でレジスタにアクセスするために使うことができます。 下位互換モードでは、変数は数字かアルファベット 1 文字 (レジスタを除く)
で、プレフィックスとして > 文字を付けます。 両モードでサポートされている変数をリストします。 | 9 | | 最後の $< コマンドのカウントです。 | | b | | データセグメントのアドレスのベースです。 | | d | | データセグメントサイズです。 | | t | | テキストセグメントサイズです。 | | e | | エントリーポイントです。 | | s | | スタックセグメントサイズです。 | | m | | <magic.h> で定義されている「マジック」番号です。 |
b、 d、 および t のエントリーは、現在のメモリーファイルのヘッダーから設定されます。
現在のメモリーファイルが有効でない場合は、これらの値は現在のオブジェクトファイルから設定されます。 e は、現在のオブジェクトファイルから設定されます。 注記: これらの値は、コアファイルとオブジェクトファイルだけから設定されます。 |
通常モードでだけサポートされている基本的な要素は次のとおりです。
| $. | | dot の値です。 |
| $+ | | dotincr の値で加算された dot 値です。 |
| $- | | dotincr の値で減算された dot の値です。 |
| $~ | | address に最後に入力された値です。 |
下位互換モードでだけサポートされている基本的な要素は次のとおりです。
| . | | dot の値です。 |
| + | | dotincr の値で加算された dot 値です。 |
| ^ | | dotincr の値で減算された dot の値です。 |
| " | | address に最後に入力された値です。 |
次の C の算術演算子、関係演算子、および論理演算子は、C と同じ優先順位でサポートされています。
?: || && | ^ & == != < > <= >= >> << + - * / % ~ !
C の単項演算子 + および - と、 () 演算子もサポートされています。
上記の演算子のほかに、次の adb 固有単項演算子も、他の単項演算子と同じ優先順位でサポートされています。
| *exp | | 現在のメモリーファイル内の exp で指定された位置の内容です。 |
| @exp | | 現在のオブジェクトファイル内の exp で指定された位置の内容です。 |
次の adb 固有 2 項演算子の優先順位は、 % 演算子と同じです。
| exp1#exp2 | | exp1 が、 次に近い exp2 の倍数に丸められます。 |
下位互換モードでは、 % 演算子の意味は / 演算子と同じです。
単項演算子 + は、このモードでは利用できません。
address 式または count 式で使う場合、次の演算子を含むサブ式は、 () で囲まなければなりません。
上記の演算子のほかに、下位互換モードでは > 演算子も囲まなければなりません。
コマンド
上記で説明したように、 adb コマンドの指定には、 従来の形式 または キーワード形式 を使えます。
下位互換モードでは、従来の形式だけがサポートされています。
従来の形式のコマンド
次のカテゴリのコマンドは、従来のコマンド形式で指定します。
下位互換モードでは、次のカテゴリが使用できます。
ファイルコマンド
このコマンドは、現在のオブジェクトファイルまたは現在のメモリーファイルに対して操作を行うもので、読み取りや書き込みに使われます。
file_selector[ modifier] [ ,size | index] [arglist]
file_selector は、次のいずれかです。
| ? | | 現在のオブジェクトファイルが選択されます。 |
| / | | 現在のメモリーファイルが選択されます。 |
| = | | この特殊シンボルは、 dot の値を出力するためだけに使われます。 |
modifier は、ファイルに対する操作を指定します。 modifier には、次の項目を指定できます。
| (修飾子なし) | | 書式文字列である、オプションの単一引き数リスト ( arglist ) を処理します。 adb は、書式文字列に従って、選択されたファイルのデータを出力します。
書式文字列がなく、選択されたファイルが ? または / の場合、 adb は以前に使われた書式文字列を使います。
ファイル選択子が = で、書式文字列がない場合、 adb は直前の = コマンドで使った書式文字列を使います。 |
| / [ , size ] value [ mask ] |
| | | 選択されたファイルを検索します。 size のサイズのワードを mask でマスクし、 dot から開始して value と一致するまで比較します。 見つかった場合、 dot にはマスクされたオブジェクトのアドレスが設定されます。
マスクが省略された場合、マスクは使われません。 dotincr には、0
が設定されます。 有効なサイズの値は、1、2、4、8 です。 size を指定しないと、 sizeof(int) が前提となります。 value と mask は、 size バイトの符号なし整数です。 たとえば、 expr?/,4 6 5 という式があるとします。 4 バイト値の
4 (6 & 5) を、現在のオブジェクトファイル内で expr の位置から検索します。 |
| = [ , size ] value1 value2 ... |
| | | サイズが size の値を、指定された位置に書き込みます。 dot は各書き込み後、 size だけ増分されます。 dotincr には
0 が設定されます。 size と values の値は、 / 修飾子と同じです。 この操作を行うには、ファイルを -w オプションでオープンしなければなりません。 たとえば、 expr?=,4 6 5 という式があるとします。 現在のオブジェクトファイル内の expr と expr+4 というアドレスそれぞれに 6 と 5 を書き込みます。 |
| > [ , index ] b e f |
| | | 選択されたファイルの index 番目のマッピングの 3 つのパラメータに、対応する引き数の値を順に設定します。 『「アドレスマップ」』 を参照してください。
指定した引き数が 3 個より少ない場合、残りのマップは変更されないままになります。
この引き数は式です。 指定しないと、 index は 0 と見なされます。 たとえば、 ?>,0 1
2 3 があるとします。 現在のオブジェクトファイルの b、 e、 f (インデックス 0) には、それぞれ 1、2、3 が設定されます。 |
下位互換モードでは、次の修飾子も使うことができます。
| * | | 修飾子が指定されなかった場合と同じ動作になります。
ただし、2 番目のマッピングパラメータを使って、出力するデータのファイルアドレスを算出します。 |
| l | | 修飾子 / と同じ動作を行いますが、サイズが
2 です。 dotincr には 2 が設定されます。 |
| L | | 修飾子 / と同じ動作を行いますが、サイズが
4 です。 dotincr には 4 が設定されます。 |
| w | | 修飾子 = と同じ動作を行いますが、サイズが
2 です。 dotincr には 2 が設定されます。 dot は、書き込まれたすべての値の合計サイズから dotincr を除いた値で増分されます。 |
| W | | 修飾子 / と同じ動作を行いますが、サイズが
4 です。 dotincr には 4 が設定されます。 dot には、 w の場合と同じ値が設定されます。 |
| m | | 修飾子 > と同じ動作を行いますが、 index が 0 です。 |
| *m | | 修飾子 > と同じ動作を行いますが、 index が 1 です。 |
これらの修飾子には、明示的に size または index を指定することはできません。 これらの修飾子の使用は推奨しません。
キーワードコマンド
キーワードコマンドは従来のコマンド形式のコマンドの前に $ を付けて、実行します。 キーワードコマンドの全リストについては、 『「キーワード形式コマンド」』 を参照してください。
プロセスコマンド
このコマンドは、サブプロセスの管理を行います。 adb はオブジェクトファイルを、サブプロセスとして実行できます。
また、pid を指定してサブプロセスを指定することもできます。 adb はマルチスレッドや、フォークされたサブプロセスを実行できます。
また、複数のサブプロセスを同時にデバッグすることもできます。 ただし、どの時点でも、 現在のサブプロセス および 現在のスレッド と呼ばれる
1 つのサブプロセスやスレッドに焦点を絞ります。
このコマンドでは : の後に、 modifier とオプションの引き数リストを指定します。 この引き数を次に示します。
| r [ objfile ] | | objfile をサブプロセスとして実行します。 address を明示的に指定すると、プログラムはこの場所から開始されます。
明示的に指定しないと、プログラムは標準のエントリーポイントから開始されます。 count の値は、停止まで何回ブレークポイントを無視するかを指定します。 subprocess の arguments は、 コマンドと同じ行に指定できます。 セミコロンは、コマンド区切り記号としては使われません。 < または
> で始まる argument は、コマンドに対し標準入力や標準出力が使われることを示します。
サブプロセスに入るとき、すべてのシグナルがオンになります。 このようなサブプロセスは、 生成されたサブプロセス と呼ばれます。 他に生成されたサブプロセスがある場合、すべてのサブプロセスが抹消されます。
アタッチされているサブプロセスは抹消しません。 このサブプロセスは、現在のサブプロセスになります。 |
| e [ objfile ] | | :r と同様にサブプロセスをセットアップします。
命令は実行しません。 |
| a [ objfile ] | | adb が、 pid のプロセスを、トレース対象サブプロセスとして使うようにします。 objfile を指定すると、 objfile のシンボル情報を使います。 カウントは、 :r と同じです。
このようなサブプロセスは、 アタッチされたサブプロセス といいます。
このサブプロセスは、現在のサブプロセスになります。 |
| k [ pid | * ] | | 生成されたサブプロセスを抹消します。 引き数を指定しないと、現在のサブプロセスが抹消されます。 pid を指定すると、その pid のサブプロセスが抹消されます。 * を指定すると、生成されたすべてのサブプロセスが抹消されます。 現在のサブプロセスは、残りのサブプロセスの中から選択されます。 |
| de [ pid | * ] | | 引き数は pid か * です。 :k と同じですが、アタッチ済みのサブプロセスに適用されます。 adb は、アタッチされたサブプロセスを抹消します。 |
| c [ signal ] | | signal シグナルを受信しても、現在のサブプロセスの実行が継続されます。
サブプロセス内のすべてのスレッドが継続されます。 signal を指定しないと、停止の原因となったシグナルが送信されます。 address を指定すると、このアドレスから現在のスレッドが継続されます。
ブレークポイントのスキップは、 :r の場合と同じです。 |
| s [ signal | arg1 arg2 ... ] |
| | | 現在のスレッドを count 回ステップ実行します。 address を指定すると、スレッドは address から実行が継続されます。 指定しないと、停止した address から実行が継続されます。 signal を指定しないと、停止の原因となった signal が送信されます。 現在のサブプロセスがない場合、 :r と同様に、オブジェクトファイルがサブプロセスとして実行されます。
この場合、シグナルは送信されません。 行の残りの部分は、サブプロセスへの引き数として扱われます。 |
| b [ command ] | | 現在のサブプロセス内の address にブレークポイントを設定します。 ブレークポイントが count-1 回実行されてから停止します。 ブレークポイントに到達するごとに、 command が実行されます。 このブレークポイントは、 subprocess ブレークポイントです。 この address にある命令を実行するスレッドがある場合、このスレッドは停止します。
同じ address に複数のブレークポイントを設定できます。 |
| d [ num | * ] | | 引き数なしで指定すると、現在のサブプロセス内の address に設定されたブレークポイントをすべて削除します。 * を指定すると、現在のサブプロセスのすべてのブレークポイントが削除されます。 num を指定すると、番号が num のブレークポイントが削除されます。 |
| en [ num | * ] | | 引き数なしで指定すると、現在のサブプロセス内の address に設定されたブレークポイントが有効になります。 * を指定すると、現在のサブプロセスのすべてのブレークポイントが有効になります。 num を指定すると、番号が num のブレークポイントが有効になります。 |
| di [ num | * ] | | 引き数なしで指定すると、現在のサブプロセス内の address に設定されたブレークポイントが無効になります。 * を指定すると、現在のサブプロセス内のすべてのブレークポイントが無効になります。 num を指定すると、番号が num のブレークポイントが無効になります。 |
| z signum [ +s | -s | +r | -r | +d | -d ] |
| | | 指定した signum のシグナルの扱いを、現在のサブプロセス内のすべてのスレッドで変更します。
次の処理を指定できます。 | +s | | signum を受信した場合に subprocess を停止します。 | | -s | | signum を受信しても subprocess を停止しません。 | | +r | | signum を受信した場合に報告を行います。 | | -r | | signum を受信しても報告を行いません。 | | +d | | ターゲットの subprocess へ signum を通知します。 | | -d | | ターゲットの subprocess へ signum を通知しません。 |
|
| w [ pid ] | | 現在のサブプロセスから、プロセス ID が pid の subprocess に切り替えます。 切り替え後のプロセスが、現在のサブプロセスになります。
このプロセスは、アタッチされたサブプロセスか、生成されたサブプロセスでなければなりません。
どちらのサブプロセスも、このコマンドの後は停止状態になります。 |
| wc [ pid ] | | w と同じですが、現在のサブプロセスは停止しません。 |
スレッドコマンド
このコマンドは、現在のサブプロセス内のスレッドを管理します。
このコマンドでは ] の後に、 modifier とオプションの引き数リストを指定します。
| s [ signum ] | | :s と同じです。 ただし、現在のスレッドのみが対象です。 |
| c [ signum ] | | :c と同じです。 ただし、現在のスレッドのみを継続します。
また、 count は、現在のスレッドのブレークポイントのスキップ数を指定します。 |
| b [ command ] | | :b と同じです。 ただし、現在のスレッドのみに適用されます。 |
| d [ num | * ] | | :d と同じです。 ただし、現在のスレッドのみに適用されます。 |
| en [ num | * ] | | :en と同じです。 ただし、現在のスレッドのみに適用されます。 |
| di [ num | * ] | | :di と同じです。 ただし、現在のスレッドのみに適用されます。 |
| z signum [ +s | -s | +r | -r | +d | -d ] |
| | | :z と同じです。 ただし、現在のスレッドのみを意味します。
このスレッドのコンテキストで signum が発生すると、サブプロセスの場合と同様に処理されます。 |
| es [ signum ] | | 現在のスレッドの signum のフラグを設定します。 つまり、サブプロセスのコンテキストではなく、このスレッドのコンテキストで signum が発生すると、サブプロセスの場合と同様に処理されます。 |
| w [ pid ] | | 現在のスレッドから他のスレッドへ切り替えます。 このコマンド後、両方のスレッドは停止状態になり、 threadid のスレッドが現在のスレッドになります。 このコマンドは、コアファイルのデバッグにも使用できます。現在のスレッドから指定されたスレッドに切り替え、指定されたスレッドを現在のスレッドとします。 |
シェルコマンド
このコマンドでは、 ! 文字の後に string を続けます。 string は変更されずに、 SHELL 環境変数で定義されているシェルか、 /bin/sh に渡されます。
変数コマンド
このコマンドは、下位互換モードでだけサポートされます。 このコマンドでは、 > の後に 変数 var、およびオプションの value を続けます。 このコマンドは、 var で指定された変数またはレジスタに値を代入します。
変数を指定しないと、 value は dot の値を使います。 この動作は推奨しません。
キーワード形式コマンド
この形式のコマンドはすべて、キーワードの後に可変個の引き数が続きます。
下位互換モードでは、 $ をキーワード形式コマンドの前に付けなければなりません。
| < filename | | filename からコマンドを読み取ります。 このコマンドがファイル内で実行された場合、これ以降のファイル内のコマンドは実行されません。 count を指定すると、下位互換モードでは、ファイル内の最初の command が実行される前に、変数 9 に count を設定します。 この動作は推奨しません。 |
| << filename | | < に似ていますが、コマンドのファイル内で使っても、そのファイルはクローズされません。 下位互換モードでは、変数 9 はコマンドの実行時に保存され、完了時に復元されます。
この動作は推奨しません。 |
| > filename | | 出力を filename に送信します。 このファイルがない場合には、ファイルを作成します。 下位互換モードでは、出力は filename に追加されます。 |
| >> filename | | > に似ていますが、出力は filename に追加されます。 |
| rp | | プロセス ID とレジスタ値が出力されます。 |
| r | | プロセスカウンタが指している命令と汎用レジスタを出力します。 |
| ra | | すべてのレジスタを出力します。 |
| f | | 浮動小数点レジスタを出力します。 |
| fd | | 倍精度浮動小数点レジスタを出力します。 |
| b | | すべてのブレークポイント、その番号、関連のカウント、状態、現在のサブプロセスのコマンドを出力します。 |
| ps | | adb がトレースしたすべてのサブプロセスの情報
(プロセス ID、タイプ (生成またはアタッチ)、カウント、スレッド ID)
を出力します。 |
| pc | | 現在のデバッグ対象に関する情報を出力します。 また、現在のデバッグ対象がサブプロセスの場合には、サブプロセスの情報
(プロセス ID、タイプ、カウント) を出力し、サブプロセスの各スレッドの情報
(スレッド ID、カウント、シグナル) も出力します。 現在のデバッグ対象がコアの場合には、コア内に存在する各スレッドの情報
(スレッド番号、ユーザースレッド ID、軽量プロセス ID、PC の値、PC のシンボル)
を出力します。 |
| pt | | 現在のスレッド情報 (スレッド ID、カウント、シグナル)
を出力します。 現在のデバッグ対象がコアの場合には、コアの現在のスレッドの情報
(ユーザースレッド ID、登録情報) を出力します。 |
| c | | 引き数は address と count です。 C のスタックのバックトレースを出力します。 address を指定すると、通常のスタックフレームポインターの代りに、現在のフレームのアドレスが対象となります。 count を指定すると、最初の count 個のフレームだけが出力されます。 下位互換モードでは、このコマンドの動作は非標準であり、推奨しません。
引き数を指定しないと、 address と count が使われます。 |
| w [ width ] | | 出力のページ幅を width にします。 (デフォルトは 80 です。) 下位互換モードでは、このコマンドの動作は非標準であり、推奨しません。 width を指定しないと、address が幅として解釈されます。 |
| s [ offset ] | | maxoffset に offset を設定します。 下位互換モードでは、このコマンドの動作は非標準であり、推奨しません。 offset を指定しないと、address がオフセットとして解釈されます。 |
| o | | すべての整数入力のデフォルトの基数を 8 進数とします。 |
| d [ radix ] | | デフォルトの基数を radix とします。 下位互換モードでは、このコマンドの動作は非標準であり、推奨しません。 radix を指定しないと、 address が基数として解釈されます。 |
| x | | すべての整数入力のデフォルトの基数を 16 進数とします。 |
| q | | adb を終了します。 |
| v | | すべての変数の値を出力します。 |
| m | | アドレスマップを出力します。 出力されるマップには、正しい corefile の初期マップとデフォルトマップの両方が含まれます
(どれが現在アクティブであるかを示す情報があります)。 |
| z | | シグナルと、そのシグナルが現在のサブプロセスではどのように処理されるかを
示すリストを出力します。 |
| zt | | シグナル、その関連フラグ、そのシグナルが現在のスレッドではどのように処理されるかを示すリストを出力します。 |
| k | | すべての DLMK モジュールまたは共有ライブラリを出力します。 |
| n [ nodenumber ] | | 引き数を指定しないと、CCNUMA マシン上のノード情報が出力されます。 nodenumber 引き数を指定すると、そのノードに移動します。 |
| p traditional_cmd |
| | | このキーワードコマンドは、従来のコマンドを引き数とし、そのコマンドを解釈します。 |
| a var value | | adb 変数 var に value を代入します。 |
| pa Virtual_Offset |
| | | 指定された Virtual Offset の物理アドレスを 16 進数で出力します。スペース ID
は adb 変数 space から取得されます。 adb 変数 space を設定するには、前述したキーワードコマンド a を使用します。 |
次のコマンドは、下位互換モードでだけ実行できます。
| 改行 | | プロセス ID とレジスタ値を出力します。 |
| M | | memfile のアドレスマッピングを、初期マップ設定または有効なメモリーファイルと、デフォルトのマッピングペアの間で切り替えます。
デフォルトのマッピングペアは、ファイル操作修飾子 > で変更できます。
メモリーファイルが不正な場合、利用できるのはデフォルトマッピングだけです。 |
| N [ nodenumber ] | | V クラスのマルチノードマシン上のノードの番号と、現在のノードの番号を出力します。
他のノードへ切り替えるには、 $N nodenumber と入力します。 |
| F | | 倍精度浮動小数点レジスタを出力します。 |
| R | | すべてのレジスタを出力します。 |
| U | | アンワインドテーブルを出力します。 |
書式文字列
書式文字列 を使うと、 adb がデータを出力する前に、その書式を指定できます。 adb は、 従来のスタイル と printf
スタイル の、2 種類の書式文字列をサポートしています。
従来のスタイルの書式文字列は、 書式指定子 のシーケンスです。 printf スタイル の書式文字列は、前に必ずコンマ
(,) が付き、二重引用符 ("")
で囲まれます。 このスタイルの書式文字列は、書式指定子と他の文字を組み合せたシーケンスです。
各書式指定子の前には、 % 文字が付きます。 書式指定子以外の文字は、そのまま使います。 % が必要であれば、 % でエスケープします。
また、C 言語スタイルの \ 文字エスケープシーケンスをサポートします。
書式文字列の処理中、 adb は書式文字列を左から右に向かって読み取り、検出した各 変換指定子 を、 dot と dotincr の合計値で指定されたオブジェクトに適用します。
各変換指定子の処理後、 dotincr は、変換指定子の
(暗黙的または明示的な) サイズ size の count 個分の値で増分されます。 = アクションにより、書式文字列を使って dot の値を出力した場合、 dot と dotincr の値は変更されません。 dotincr 演算子の場合、 dotincr は適切にアップデートされます。
下位互換モードでは、従来のスタイルの書式文字列だけがサポートされます。
書式指定子
書式指定子 は、 変換指定子 か dot
演算子 です。
1. 変換指定子
各変換指定子は、 count (オプション) または pspec 、 サイズ指定文字 (オプション)、 変換指定文字 の順で成っています。
| count | | この項目は、従来のスタイルの書式文字列でだけ利用できます。 count は、変換指定子を繰り返す回数を指定します。 この項目を指定しないと、 count は 1 として扱われます。 |
| pspec | | この項目は、 printf スタイル の書式文字列でだけ利用できます。
この項目はフラグ、フィールド幅、精度のシーケンスです。 printf(3S) ライブラリ関数を参照してください。 |
| サイズ指定文字 | | この文字は、オブジェクトのサイズを指定します。 サイズは、2
通りの方法で指定できます。 1 つは絶対サイズ指定子を使う方法で、もう 1
つは相対サイズ指定子を使う方法です。 絶対サイズ指定子を次に示します。 | b | | オブジェクトのサイズは 1 バイトです。 | | e | | オブジェクトのサイズは 2 バイトです。 | | g | | オブジェクトのサイズは 4 バイトです。 | | j | | オブジェクトのサイズは 8 バイトです。 | | k | | オブジェクトのサイズは 16 バイトです。 |
相対サイズ指定子を次に示します。 | w | | オブジェクトのサイズは、ターゲットプロセッサのマシンワードのサイズです。 | | h | | オブジェクトのサイズは、ターゲットプロセッサのマシンワードのサイズの半分です。 | | l | | オブジェクトのサイズは、ターゲットプロセッサのマシンワードのサイズの
2 倍です。 | | n | | オブジェクトのサイズは、ターゲットプロセッサのポインターのサイズです。
このサイズは、ワイドファイルとナローファイルでは異なります。 | | m | | オブジェクトのサイズは、ターゲットプロセッサの命令のサイズです。
このサイズが一定であるプロセッサ上でだけサポートされます。 |
|
| 変換指定文字 | | 次の文字がサポートされています。 | a | | dot の値が、シンボル形式で出力されます。 | | c | | オブジェクトが、文字として出力されます。 | | o | | オブジェクトが、符号なし 8 進数として出力されます。 | | d | | オブジェクトが、符号付き 10 進数として出力されます。 | | u | | オブジェクトが、符号なし 10 進数として出力されます。 | | i | | オブジェクトが命令として逆アセンブリされ、出力されます。 | | f | | オブジェクトが、そのサイズに応じた浮動小数点形式で出力されます。 | | p | | オブジェクトが、シンボル形式で出力されます。 | | s | | オブジェクトがヌル終了文字列として扱われ、出力されます。
この文字を dot の出力に使うことはできません。 | | y | | オブジェクトが time_t 型にキャストされ、 ctime(3C) 形式で出力されます。 |
printf スタイル の書式文字列でサポートされているのは、 c、 o、 d、 u、 x、 f、
および s だけです。 サイズ指定文字を指定しないと、 d、 u、 x、 o、
および f 変換指定文字の場合は w 、 c 変換指定文字の場合は b 、 i 変換指定文字の場合は m 、 y 変換指定文字の場合は sizeof(time_t) として扱われます。
その他の場合は、 w として扱われます。 例: 10=2bo, 'abc'=,"%s", main?4i |
2. dot 演算子
dot 演算子は、 count (オプション)、 サイズ指定文字 (オプション)、 dot 演算子文字 から成ります。
| count | | count は、 dot 演算子 を繰り返す回数を指定します。 指定しないと、 count は 1 として扱われます。 printf スタイル
の書式文字列の場合、 count は必ず 1 です。 |
| サイズ指定文字 | | 変換指定子のサイズ指定文字と同じです。 |
| dot 演算子文字 | | dot 演算子文字は、次のいずれかです。 | v | | dotincr を count 回のサイズで増加させます。 | | z | | dotincr を count 回のサイズで減小させます。 |
例: =5bv, =5bv5bz |
下位互換モード
下位互換モードでは、 従来のスタイル は 変換指定子、 dot 演算子、 スペース指定子、 または リテラル文字列です。
1. 変換指定子
変換指定子は、 count (オプション)、 変換指定文字 から構成されます。
| count | | 変換指定子 が繰り返される回数を指定します。 指定しないと、 count は 1 として扱われます。 |
| 変換指定文字 | | これらの文字では、暗黙的にサイズが決っています。
明示的にサイズを指定することはできません。 次の書式文字が利用できます
(横の数字は、暗黙的に決っているサイズです)。 | o 2 | | オブジェクトが、符号なし 8 進数として出力されます。 | | O 4 | | オブジェクトが、符号なし 8 進数として出力されます。 | | q 2 | | オブジェクトが、符号付き 8 進数として出力されます。 | | Q 4 | | オブジェクトが、符号なし 8 進数として出力されます。 | | d 2 | | オブジェクトが、符号付き 10 進数として出力されます。 | | D 4 | | オブジェクトが、符号付き 10 進数として出力されます。 | | x 2 | | オブジェクトが、符号なし 16 進数として出力されます。 | | X 4 | | オブジェクトが、符号なし 16 進数として出力されます。 | | A 8 | | オブジェクトが、符号なし 16 進数として出力されます。 | | u 2 | | オブジェクトが、符号なし 10 進数として出力されます。 | | U 4 | | オブジェクトが、符号なし 10 進数として出力されます。 | | f 4 | | オブジェクトが、浮動小数点数として出力されます。 | | F 8 | | オブジェクトが、倍精度浮動小数点数として出力されます。 | | b 1 | | オブジェクトが、16 進数として出力されます。 | | B 1 | | オブジェクトが、8 進数として出力されます。 | | c 1 | | オブジェクトが、文字として出力されます (符号ビットは無視されます)。 | | C 1 | | オブジェクトが、次のエスケープ規約を使って、文字として出力されます。
まず、符号ビットが廃棄され、値 000 〜 040 の文字が @ として出力され、 その後に範囲
0100 〜 0140 の対応する文字が出力されます。 @ 文字は、 @@ として表されます。 | | s n | | オブジェクトは、 n バイトの命令として扱われ出力されます。 n の値は、命令が占めるバイト数です。 この文字を dot の出力に使うことはできません。 | | S n | | オブジェクトは、ヌルバイトで終了するバイトシーケンスとして扱われます。
オブジェクトのバイトは、 @ エスケープ規約を使って、文字のシーケンスとして出力されます。 n の値は、オブジェクト内のバイトの数 (ヌルバイトを含む)
です。 この文字を dot の出力に使うことはできません。 | | Y 4 | | オブジェクトが、日付形式 (ctime(3C) を参照) で出力されます。 | | i n | | オブジェクトが命令として逆アセンブリされ出力されます。 n の値は、命令が占めるバイト数です。 | | a 0 | | dot の値がシンボル形式で出力されます。 | | p n | | オブジェクトが、シンボル形式で出力されます。 n の値はマシンにより異なります。 |
例: main=ba, 'a'=c, main?10box |
2. dot 演算子
dot 演算子は、count (オプション)、dot 演算子文字から構成されます。
| count | | 変換指定子の count と同じです。 |
| dot 演算子文字 | | dot 演算子文字は、次のいずれかです。 | ^ | | dotincr は、直前の変換指定文字に対応するサイズの
count 個分で減小します。 | | + | | dotincr は、count で増加します。 | | - | | dotincr は、count で減小します。 |
|
例: 10=-, 10=2-, 10=5o4^
3. スペース指定子
スペース指定子は、 count (オプション) または tabstop (オプション) と、 スペース指定文字の順で構成されます。
| count | | 変換指定子の count と同じです。 |
| tabstop | | 変換指定子の count と同じです。 ただし、 t スペース指定子にだけ使われます。 この値を指定しないと、1
として扱われます。 |
| スペース指定文字 | | スペース指定文字は、次のいずれかです。 | t | | tabstop の次のタブストップへ移動します。 たとえば、 8t の場合、次の
8 スペースのタブストップへ移動します。 | | r | | スペースを 1 個出力します。 | | n | | 改行文字を 1 個出力します。 |
|
例: 10=2o2t2o, 10=2o2r2o, 10=2o2n2o
4. リテラル文字列
リテラル文字列は、二重引用符 ("") で囲まれた、任意の個数の文字です。
例: 10="in octal "ot"in hex "x
アドレスマップ
オブジェクトファイルやアプリケーションコアファイルなどのファイルでは、仮想メモリーアドレスとファイルのオフセットは同じではありません。
このため adb は、 アドレスマップ の配列を保持して、このようなファイルの仮想メモリーアドレスをファイルオフセットにマッピングします。
各アドレスマップは、 開始仮想アドレス (b)、 終了仮想アドレス (e)、 および開始ファイルオフセット (f) の、3 つの項目から成ります。 この 3 つの項目は、 f から始まる file 内の連続領域を占める b 〜 e - 1 のすべての アドレス を指定します。 b\(<= a< e という仮想アドレス a が指定されると、 ファイルオフセットは f+ a- b となります。
状態変数
任意の時点の adb の状態を定義するために、次の変数があります。
| dot | | 現在のアドレスです。 初期値は 0 です。 |
| dotincr | | 現在のアドレス増分値です。 初期値は 0 です。 |
| prompt | | adb が使うプロンプト文字列です。 初期値は ``adb> ''
です。 |
| radix | | 現在の入力基数です。 初期値は、ターゲットプロセッサのアセンブラ言語に従います。 |
| maxwidth | | 表示の最大幅です。 初期値は 80 です。 |
| maxoffset | | 既知のシンボルからこの制限値内にあるアドレスの場合、 adb はこのアドレスを symbol_name+offset として出力します。 この制限値内にない場合は、 address と出力されます。 初期値は、 0xffffffff です。 |
| macropath | | adb マクロを検索するディレクトリのリストです。
初期値は、 .:/usr/lib/adb です。 |
| pager | | adb が使うページャーコマンドです。 初期値は、 more
-c です。 |
| backcompat | | adb が下位互換モードの場合、1
が設定されます。 初期値は、ホストプロセッサにより異なります。 |
注記
adb64 は、 adb へのシンボリックリンクです。このシンボリックリンクは、 adb64 を使用している古いスクリプトとの互換性を保つために提供されています。