Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dbx(1) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

DBX(1)  —  NEWS-OS Programmer’s Manual

名称

dbx − ソースレベルのデバッガ

形式

dbx [ −I directory ] [ −c file ] [ −i ] [ −k ] [ −r ] [ −pixie ] [ object [ core ] ]

解説

dbx はソースレベルのデバッガであり、オペレーティングシステムの NEWS-OS のもとで動作します。 dbx のこの強化バージョンは、 cc(1)、f77(1)、pc(1)、 as(1) および RISC NEWS マシンコードで動作します。

デバッガと一緒に使用されるオブジェクトファイルは、 コンパイラに対して適切なオプション(通常は −g) を指定することによって生成されます。 結果として生じるオブジェクトファイルには、 シンボルテーブル情報が含まれています。 これには、そのオブジェクトファイルを作成するためにコンパイラが変換した すべてのソースファイルの名前も含まれています。 これらのソースファイルはデバッガからアクセス可能です。 −g が指定されていない場合は、制限されたデバッグが可能です。

コアファイルが現在のディレクトリに存在するか、 またはコアダンプファイルが指定された場合は、 dbx を使用して、障害が発生したときのプログラムの状態を調べることができます。

dbx は 511 桁以上のデバッグをサポートしていません。

dbx の実行

現在のディレクトリまたはユーザのホームディレクトリに .dbxinit ファイルが存在する場合は、 dbx が呼び出されたときにその中のコマンドが実行されます。

dbx は呼び出された場合、以下のコマンド行オプションを認識します。

−Idirectory または −Idirectory
dbx に指定されたディレクトリを調べてソースファイルを捜すように指示します。 複数の −I オプションを使用して複数のディレクトリを指定することができます。 dbx は、 -I が使用されているか否かに関係なく、現在のディレクトリおよびオブジェクト ファイルのディレクトリをサーチしてソースファイルを捜し出します。

−c file
.dbxinit 以外のコマンドファイルを選択します。

−i 対話モードを使用します。 このオプションは、 # をファイル内のコメントとしては扱いません。 これは、ファイルから読み取りを行う場合でさえもソースを指定するように 促してきます。 このオプションを使用すると、 dbx は、ターミナルの場合であるかのように特殊フォーマットを許します。

−r オブジェクトファイルを直ちに実行します。

−pixie
pixie 出力を使用します。 実行可能なものは、 executable.pixie でなければならず、 pixie 形式でない実行可能なファイルも pixie 形式の実行可能なファイルと同じディレクトリになければなりません。

複数のコマンドを、セミコロン (;) で区切ることによって、同じコマンド行上で指定することができます。 ユーザが文字列を入力してストップ文字(通常は ^z; stty(1) を参照)を押した場合、 dbx はその文字列と一致するシンボル名をプログラムから完成しようとします。

dbx はまた、 inferior としての emacs のもとで実行することができます。 これは、このモードでは dbx は emacs によって制御され、 emacs と通信を行うことを意味します。

モニタ

以下のコマンドが dbx モニタを制御します。

![string] [integer] [−integer]
ヒストリリストからコマンドを指定します。

help
dbx コマンドのリストを表示し、表示に UNIX システムの more コマンドを使用します。

history
ヒストリリストから項目を表示します。デフォルトは 20 です。

quit[!]
確認した後、 dbx を終了します。 !  が指定された場合は、確認は要求されません。

dbx の制御

alias [name(arg1,...argN)"string"]
既存の別名をすべてリストします。 あるいは、引数が指定された場合は、新しい別名を定義します。

unalias alias command_name
指定された別名を削除します。

delete expression1, ... expressionN

delete all
指定された項目をステータスリストから削除します。引数 all を指定すると、すべての項目がステータスリストから削除されます。

playback input [file]
record input コマンドによってテキストファイルにセーブされたコマンドを再び実行します。

playback output [file]
record output コマンドによってセーブされたデバッガ出力を再び実行します。

record input [file]
dbx に対して入力されたコマンドをすべて記録します。

record output [file]
dbx 出力をすべて記録します。

sh [shell command]
dbx からシェルを呼び出します。あるいは、シェルコマンドを実行します。

status
現在設定されている stop、record および trace コマンドを表示します。

tagvalue tagname
tagname の値を返します。タグが複数の行にわたっている場合、 または引数を含んでいる場合は、エラーが発生します。 tagvalue はどんな表記でも使用できます。

set [variable = expression]
既存のデバッガ変数およびその値をリストします。 このコマンドを使用して、既存の変数に新しい値を割り当てたり、 新しい変数を定義することもできます。

unset variable
指定されたデバッガ変数の設定を削除します。

ソースの検査

/regular expression
ソースコードを前から後へサーチして正則表現を捜し出します。

?regular expression
ソースコードを後から前へサーチして正則表現を捜し出します。

edit [file]
dbx からエディタを呼び出します。

file [file]
現在のファイル名を表示します。 あるいは、ファイル名が指定された場合は、 このコマンドは現在のファイルを指定されたファイルに変更します。

func [expression] [procedure]
指定されたプロシージャに移動します(実行レベル)。 あるいは、式またはプロシージャが指定されない場合は、 現在の実行レベルを表示します。

list [expression:integer]

list [expression]
指定された行を表示します。デフォルトは 10 行です。

tag tagname
現在のファイル/行を tagname によって指定された位置に設定します。実行する内容は、 vi(1) のタグオペレーションと似ています。

use [directory1 ... directoryN]
ソースのディレクトリをリストします。 あるいは、ディレクトリ名が指定された場合は、このコマンドは以前のリスト を新しいディレクトリに置き換えます。

whatis variable
指定された名前のタイプ宣言を表示します。

which variable
現在使用されている変数名を捜し出します。

whereis variable
指定された変数の評価(有効範囲)をすべて表示します。

プログラムの制御

assign expression1 = expression2
指定された式を指定されたプログラム変数に割り当てます。

[n] cont [signal]

cont [signal] to line

cont [signal] in procedure
ブレークポイントの後のプログラムの実行を続けます。 n ブレークポイントは、 n がステッピングの前に指定された場合は無視されます。指定された場合、 signal がデバッグ中の処理に渡されます。

goto line
ソース内の指定された行に行きます。

next [integer]
指定された行数をステップします。 デフォルトは 1 です。 このコマンドはプロシージャ内にはステップしません。

rerun [arg1 ... argN] [<file1] [>file2]

rerun [arg1 ... argN] [<file1] [>&file2]
run コマンドに指定されたものと同じ引数を使用して、プログラムを再度実行します。 新しい引数が指定された場合、 rerun はその引数を使用します。

run [arg1 ... argN] [<file1] [>file2]

run [arg1 ... argN] [<file1] [>&file2]
指定された引数でプログラムを実行します。

return [procedure]
プロシージャから復帰するまで実行し続けます。 プロシージャが指定されない場合、 dbx は次のプロシージャを仮定します。

step [integer]
指定された行数をステップします。 このコマンドはプロシージャ内にステップします。 デフォルトは 1 行です。

ブレークポイントの設定

catch [signal]
dbx がキャッチするシグナルをすべて表示します。 あるいは、引数が指定された場合は、 キャッチリストに新しいシグナルを追加します。

ignore [signal]
dbx がキャッチしないシグナルをすべて表示します。 あるいは、シグナルが指定された場合は、 このコマンドは無視リストにそのシグナルを追加します。

stop [variable]

stop [variable] at line [if expression]

stop [variable] in procedure [if expression]

stop [variable] if expression
指定されたポイントにブレークポイントを設定します。

trace variable [at line [if expression]]

trace variable [in procedure [if expression]]
指定された変数をトレースします。

when [variable] [at line] {command_list}

when [variable] [in procedure] {command_list}
指定された dbx のコンマで区切られたコマンドリストを実行します。

プログラム状態の検査

dump [procedure] [.]
プロシージャに関する変数情報を表示します。 ドット (.) が指定された場合、このコマンドは、 スタック内の全プロシージャに対してそれらのプロシージャの局所変数と グローバル変数の情報を表示します。

down [expression]
スタック内の指定された実行レベル数だけ下に移動します。 デフォルトは 1 レベルです。

up [expression]
スタック上の指定された実行レベル数だけ上に移動します。 デフォルトは 1 レベルです。

print expression1,...expressionN
指定された式の値を表示します。 expression が dbx キーワードである場合は、それは括弧で囲まれなければなりません。 たとえば、 output と呼ばれる変数(これは playback および record コマンドでの変数でもあります)を表示するには、 次のように入力しなければなりません。

: print (output)

printf "string", expression1,...expressionN
C 言語の文字列フォーマットを使用して、指定された式の値を表示します。 print コマンドの場合と同様に、 expression が dbx キーワードである場合は、それを括弧で囲まなければなりません。

printregs
レジスタ値をすべて表示します。

where
現在の実行レベルを示すスタックトレースを行います。

where n
スタックのトップ n レベルだけを表示します。

マシンレベルでのデバッグ

[n] conti [signal]

conti [signal] to address

conti [signal] in procedure
ブレークポイントの後のアセンブリコードの実行を続けます。 n がステッピングの前に指定された場合は、 n ブレークポイントは無視されます。 指定された場合は、 signal がデバッグ中の処理に渡されます。

nexti [integer]
指定された機械命令数だけステップします。 デフォルトは 1 です。 このコマンドはプロシージャ内にはステップしません。

stepi [integer]
指定された機械命令数だけステップします。 このコマンドは、プロシージャ内にステップします。 デフォルトは 1 命令です。

stopi [variable] at address [if expression]

stopi [variable] in procedure [if expression]

stopi [variable] if expression
指定されたポイントにマシンコードのブレークポイントを設定します。

tracei variable at address [at address if expression]

tracei variable in procedure [at address if expression]
機械命令内の指定された変数をトレースします。

wheni [variable] [at address] {command_list}

wheni [variable] [in procedure] {command_list}
コンマで区切られた、指定された dbx コマンドリストを実行します。

address[?]/<count><mode>
前から後方へ(? が指定された場合は逆方向)にサーチし、 内容 address を表示するか、または、 位置 address のコードをディスアセンブルします。 count は指定されたアドレスで表示される項目の数です。 mode は、表示形式を決める下記の表の中の文字の 1 つです。

dショートワードを 10 進数で表示する
Dロングワードを 10 進数で表示する
oショートワードを 8 進数で表示する
Oロングワードを 8 進数で表示する
xショートワードを 16 進数で表示する
Xロングワードを 16 進数で表示する
bバイトを 8 進で表示する
cバイトを文字として表示する
sナルで終わる文字列を表示する
f単精度実数を表示する
g倍精度実数を表示する
i機械命令を表示する
nデータを入力されたフォーマットで表示する

address/<count><value><mask>
指定された address から後方に向かって 32 ビットのワードをサーチします。 count は探索で処理するワード数を指定します。 mask による AND オペレーションの後で address に ある value と等しい場合は、アドレスが表示されます。

定義済み dbx 変数

デバッガは以下の定義済みの変数をもっています。

$addrfmt アドレスのフォーマットを指定します。 これは、C の printf 文が指定できるどの形式でも設定できます。デフォルトは "0x%x" です。

$byteaccess 0 でない値に設定された場合、dbx は 4 バイト以下のメモリアイテムに 対するアクセスを特別なバイト毎のアクセスで行います。 デフォルトは 0 です。

$casesense 0 でない値に設定された場合は、 探索中に大文字と小文字が区別されることを指定します。 0 に設定された場合は、大文字であるか小文字であるかは無視されます。 デフォルトは 0 です。

$curevent 追加されたまたは出会った現在のイベントを示します。 dbx によってだけ設定されます。

$curline 現在の行を指定します。 dbx によってだけ設定されます。

$cursrcline リストされている最後の行に 1 を足したものを示します。 dbx によってだけ設定されます。

$curpc 現在のアドレスを指定します。 wi および li 別名で使用されます。

$datacache データ空間から情報をキャッシュします。そのためには、 dbx は一度だけデータ空間をアクセスしなければなりません。 オペレーティングシステムをデバッグするには、この変数を 0 に設定します。 そうでない場合は、0 でない値に設定します。 デフォルトは 1 です。

$debugflag

$defin

$defout dbx が内部で使用するための変数です。

$dispix pixie コードをデバッグするときに使用する変数です。 0 に設定された場合は、デバッギング中に機械コードが示されます。 1 に設定された場合は、 pixie コードが示されます。デフォルトは 0 です。

$hexchars 出力文字が 16 進フォーマットで表示されます (set、unset で指定)。

$hexin 入力定数が 16 進数であることを指定します。

$hexints 0 でない値に設定された場合は、デフォルトの出力定数を 16 進数に変換します。 $octints を無効にします。

$hexstrings 1 に設定された場合は、文字列がすべて 16 進数で表示されることを指定します。 0 に設定された場合は、文字列は文字フォーマットで表示されます。

$historyevent 現在のヒストリ行を表示します。

$lines ヒストリの行数。デフォルトは 20 です。

$listwindow list コマンドが表示する行数を指定します。

$main dbx が開始されるプロシージャの名前を指定します。 これは、どのプロシージャにも設定できます。デフォルトは main です。

$maxstrlen 文字列を示すポインタに対して dbx が表示する文字列の文字数を指定します。デフォルトは 128 です。

$octin 0 でない値に設定された場合は、デフォルトの入力定数を 8 進数に変更します。 $hexint が設定されると、この設定は無効になります。

$octints 出力整数が 8 進フォーマットで表示されます (set、unset で指定)。

$page 長い出力をページングするかどうかを指定します。 0 でない値に設定された場合は、ページングがオンになります。 0 に設定された場合は、ページングがオフになります。 デフォルトは 1 です。

$pagewindow 情報の長さが 1 画面を超える場合に表示する行数を指定します。 これは、任意のターミナル上の行数に合わせて変更することができます。 0 に設定された場合、この変数は 1 行と見なされます。 デフォルトは 22 で、継続の問い合わせ用にスペースが残されます。

$pdbxport pdbx のターゲットマシンに接続するために使用される /etc/remote[.pdbx] からのポート名。

$printwhilestep
step[n] および stepi[n] 命令で使用する変数です。 0 でない整数は、 n 個の行、命令あるいはその両方を表示するよう指定します。 0 は、最後の行、命令あるいはその両方を表示するよう指定します。 デフォルトは 0 です。

$pimode playback input コマンドとともに使用する場合、入力を表示します。デフォルトは 0 です。

$printdata 0 でない値に設定された場合、命令表示の後に使用されるレジスタの内容が 表示されます。デフォルトは 0 です。

$printwide 0 でない値に設定された場合、変数の内容が水平フォーマットで表示されます。 デフォルトは 0 です。

$prompt dbx のプロンプトを設定します。

$readtextfile 1 に設定された場合、 dbx はプロセスではなくオブジェクトファイルから命令を読み取ろうとします。 dbx は、システムプログラマーズパッケージを使用して遠隔操作によるデバッグを 行うときは高速に実行されます。 デバッグ中にデバッグされているプロセスがコードをコピーする場合、 この変数は常に 0 に設定してください。デフォルトは 1 です。

$regstyle 0 に設定された場合、 レジスタは、アセンブリ言語で書かれた デバッグプログラムで一般に使用される特殊フォーマット (zero、at、 v0、v1、...)  で表示されます。 0 でない値に設定された場合、 レジスタはその通常の r フォーマット (r0、r1、 ...r31) で表示されます。 デフォルトは 1 です。

$repeatmode 0 でない値に設定された場合、(空行として) RETURN キーを押した後に 最後のコマンドが繰り返されます。デフォルトは 1 です。

$rimode 0 でない値に設定された場合、出力を記録している間は入力も記録されます。 デフォルトは 0 です。

$sigtramp ユーザシグナルハンドラを呼び出すためにシステムによって呼び出される コードの名前を dbx に知らせます。この変数は、NEWS-OS では sigvec の値に設定されます。

$tagfile ファイル名を設定して、 tags コマンドおよび tabvalue マクロがタグを探索するファイルを示します。

定義済みの dbx 別名

デバッガは下記の定義済み別名をもっています。

?  dbx コマンドすべてのリストを表示します。

a プログラム変数に値を割り当てます。

b 指定された行にブレークポイントを設定します。

bp 指定されたプロシージャ内で停止します。

c ブレークポイントの後のプログラムの実行を続けます。

d 指定された項目をステータスリストから削除します。

e 指定されたファイルを調べます。

f スタック上の指定された実行レベルに移動します。

g 指定された行に移動し、そこでプログラムの実行を開始します。

h 現在ヒストリリストにある項目をすべて表示します。

j ステータスリストにどんな項目があるかを示します。

l ソースコードの次の 10 行を表示します。

li 次の 10 の機械命令を表示します。

n または S
プロシージャコール内にステップすることなく、指定された行数だけステップ します。

ni または Si
プロシージャコール内にステップすることなく、指定された数のアセンブリ コード命令をステップします。

p 指定された式または変数の値を表示します。

pd 指定された式または変数の値を 10 進数で表示します。

pi record input コマンドによってセーブされた dbx コマンドを再び実行します。

po 指定された式または変数の値を 8 進数で表示します。

pr すべてのレジスタの値を表示します。

px 指定された変数または式の値を 16 進数で表示します。

q デバッグセッションを終了します。

r run コマンドで指定されたものと同じ引数を使用して再びプログラムを実行します。

ri 入力されたすべてのコマンドをファイルに記録します。

ro すべてのデバッガ出力を指定されたファイルに記録します。

s 後に指定された行数分だけステップします。

si 後に指定された数だけアセンブリコード命令をステップします。

t スタックトレースを行います。

u 前の 10 行を表示します。

w 現在の行の前後 5 行を表示します。

W 現在の行の前後 10 行を表示します。

wi 機械命令の前後 5 つの機械命令を表示します。

関連事項

RISC NEWS Compiler Languages Programmer’s Guide.

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026