JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  dbx の概要

2.  dbx の起動

3.  dbx のカスタマイズ

4.  コードの表示とコードへの移動

5.  プログラムの実行制御

6.  ブレークポイントとトレースの設定

7.  呼び出しスタックの使用

8.  データの評価と表示

9.  実行時検査

10.  修正継続機能 (fix と cont)

11.  マルチスレッドアプリケーションのデバッグ

12.  子プロセスのデバッグ

13.  OpenMP プログラムのデバッグ

14.  シグナルの処理

15.  dbx を使用してプログラムをデバッグする

16.  dbx を使用した Fortran のデバッグ

17.  dbx による Java アプリケーションのデバッグ

18.  機械命令レベルでのデバッグ

19.  dbx の Korn シェル機能

20.  共有ライブラリのデバッグ

A.  プログラム状態の変更

B.  イベント管理

イベントハンドラ

イベントの安全性

イベントハンドラの作成

イベントハンドラを操作するコマンド

イベントカウンタ

イベント指定の設定

ブレークポイントイベント仕様

in function

at [filename: ]line_number

at address_expression

infile filename

infunction function

inmember function inmethod function

inclass classname [-recurse | -norecurse]

inobject object-expression [-recurse | -norecurse]

データ変更イベント指定

access mode address-expression [, byte-size-expression ]

change variable

cond condition-expression

システムイベント指定

dlopen [ lib-path ] dlclose [ lib-path ]

fault fault

lwp_exit

sig signal

sig signal sub-code

sysin code | name

sysout code | name

sysin | sysout

実行進行状況イベント仕様

exit exitcode

next

returns

returns function

step

その他のイベント仕様

attach

detach

lastrites

proc_gone

prog_new

stop

sync

syncrtld

thr_create [thread_id]

thr_exit

throw

throw type

throw -unhandled

throw -unexpected

timer seconds

イベント指定のための修飾子

-if condition

-resumeone

-in function

-disable

-count n -count infinity

-temp

-instr

-thread thread_id

-lwp lwp_id

-hidden

-perm

解析とあいまいさに関する注意

事前定義済み変数

when コマンドに対して有効な変数

$handlerid

when コマンドと特定のイベントに対して有効な変数

イベントハンドラの例

配列メンバーへのストアに対するブレークポイントを設定する

単純なトレースを実行する

関数の中だけハンドラを有効にする (in function)

実行された行の数を調べる

実行された命令の数をソース行で調べる

イベント発生後にブレークポイントを有効にする

replay 時にアプリケーションファイルをリセットする

プログラムの状態を調べる

浮動小数点例外を捕捉する

C.  マクロ

D.  コマンドリファレンス

索引

事前定義済み変数

読み取り専用の ksh 事前定義済み変数がいくつか用意されています。次に示す変数は常に有効です。

変数
定義
$ins
現在の命令の逆アセンブル
$lineno
現在の行番号 (10 進数)
$vlineno
現在の表示行番号 (10 進数)
$line
現在の行の内容
$func
現在の関数の名前
$vfunc
現在の表示関数の名前
$class
$func が所属するクラスの名前
$vclass
$vfunc が所属するクラスの名前
$file
現在のファイルの名前
$vfile
現在表示しているファイルの名前
$loadobj
現在のロードオブジェクトの名前
$vloadobj
現在表示している現在のロードオブジェクトの名前
$scope
逆引用符表記での現在の PC のスコープ
$vscope
現在表示している逆引用符表記での PC のスコープ
$funcaddr
$func のアドレス (16 進数)
$caller
$func を呼び出している関数の名前
$dllist
dlopen イベントまたは dlclose イベントのあと、ロードされた、またはアンロードされた直後のロードオブジェクトのリストが格納されます。dllist の中の先頭の単語は実際には「+」または「-」です。これは、dlopendlclose のどちらが発生したかを示します。
$newhandlerid
最後に作成されたハンドラの ID。この変数は、ハンドラを削除するコマンドのあとの未定義の値です。ハンドラを作成した直後に変数を使用します。dbx では、複数のハンドラを作成する 1 つのコマンドに対してすべてのハンドラ ID を取り込むことはできません。
$firedhandlers
停止の原因となった最近のハンドラ ID のリストです。リストにあるハンドラには、status コマンドの出力時に「*」が付きます。
$proc
現在デバッグ中のプロセスの ID
$lwp
現在の LWP の ID
$thread
現在のスレッドの ID
$newlwp
新しく作成した LWP の lwp ID
$newthread
新しく作成したスレッドのスレッド ID
$prog
デバッグ中のプログラムの絶対パス名
$oprog
$prog の前の値は、$prog が「-」に戻るときに exec() に続いて、デバッグしていたものに戻る場合に使用します。$prog がフルパス名に展開され、$oprog がコマンド行または debug コマンドに指定されているプログラムパスを含みます。exec() が 2 回以上呼び出されると、オリジナルのプログラムには戻れません。
$exec32
dbx バイナリが 32 ビットの場合は true です。
$exitcode
プログラムの最後の実行状態を終了します。この値は、プロセスが実際には終了していない場合、空文字列になります。
$booting
イベントがブートプロセス中に起こると、true に設定されます。新しいプログラムは、デバッグされるたびに、共有ライブラリのリストと位置を確認できるよう、まず実行されます。プロセスはそのあと終了します。ブートはこのようなシーケンスで行われます。

ブートが起こっても、イベントはすべて使用可能です。この変数は、デバッグ中に起こる sync および syncrtld イベントと、通常の実行中に起こるイベントを区別するときに使用してください。

たとえば、whereami は次のように実装できます。

function whereami {
  echo Stopped in $func at line $lineno in file $(basename $file)
  echo "$lineno\t$line"
}

when コマンドに対して有効な変数

次の変数は、when コマンドの本体内でのみ有効です。

$handlerid

本体の実行中、$handlerid にはそれが属する when コマンドの ID が格納されます。次のコマンドは同じ結果になります。

when X -temp { do_stuff; }
when X  { do_stuff; delete $handlerid; }

when コマンドと特定のイベントに対して有効な変数

一部の変数は、以下の表に示すように、when コマンドの本文内および特定のイベントに対してのみ有効です。

表 B-1 sig イベントに固有の変数

変数
説明
$sig
イベントを発生させたシグナル番号
$sigstr
$sig の名前
$sigcode
適用可能な場合、$sig のサブコード
$sigcodestr
$sigcode の名前
$sigsender
必要であれば、シグナルの送信者のプロセス ID

表 B-2 exit イベントに固有の変数

変数
説明
$exitcode
_exit(2) または exit(3) に渡された引数の値、または main の戻り値

表 B-3 dlopen および dlclose イベントに固有の変数

変数
説明
$dlobj
dlopen または dlclose されたロードオブジェクトのパス名

表 B-4 sysin および sysout イベントに固有の変数

変数
説明
$syscode
システムコールの番号
$sysname
システムコールの名前

表 B-5 proc_gone イベントに固有の変数

変数
説明
$reason
シグナル、終了、強制終了、または切り離しのいずれか。

表 B-6 thr_create イベントに固有の変数

変数
説明
$newthread
新しく作成されるスレッドの ID (t@5 など)
$newlwp
新しく作成される LWP の ID (l@4 など)

表 B-7 watch イベントに有効な変数

変数
説明
$watchaddr
アドレスが書き込まれたり、読みだされたり、実行されたりします。
$watchmode
次のいずれかです。r は読み込み、w は書き込み、x は実行。そのあとに次のいずれかが続きます。a は後、b は前。