Oracle® Solaris Studio 12.4: dbx コマンドによるデバッグ

印刷ビューの終了

更新: 2015 年 1 月
 
 

表示スコープ

dbx でプログラムのさまざまな要素を検査すると、表示スコープが変更されます。 dbx は、あいまいなシンボルの解決などの目的で、式の評価中に表示スコープを使用します。たとえば、次のコマンドを入力すると、dbx は表示スコープを使用して、どの i に出力するかを決定します。

(dbx) print i

各スレッドまたは LWP は独自の表示スコープを持っています。スレッドを切り替えると、各スレッドはその表示スコープを返します。

表示スコープのコンポーネント

表示スコープの一部のコンポーネントは、次の事前に定義された ksh 変数で可視になります。

$vscope

現在の表示スコープ

$vloadobj

現在の表示ロードオブジェクト

$vfile

現在の表示ファイル

$vlineno

現在の表示行番号

$vclass

$vfunc が属するクラス

$vfunc

現在の表示関数

現在の表示スコープのすべてのコンポーネントは、相互互換性があります。たとえば、関数を含まないファイルを表示する場合、現在の表示ソースファイルが新しいファイル名に更新され、現在の表示関数が NULL に更新されます。

表示スコープの変更

    次のコマンドは表示スコープを変更するもっとも一般的な方法です。

  • func

  • file

  • up

  • down

  • frame number

  • pop

  • list procedure

debug コマンドおよび attach コマンドは、最初の表示スコープを設定します。

ブレークポイントに達すると、dbx によって表示スコープが現在の位置に設定されます。 stack_find_source 環境変数が on に設定されている場合は、dbx は、ソースコードを含むスタックフレームを検索してアクティブにしようとします。

up コマンド、down コマンド、frame コマンド、または pop コマンドを使用して現在のスタックフレームを変更すると、dbx は、新しいスタックフレームからのプログラムカウンタに従って表示スコープを設定します。

list コマンドによって使用される行番号位置は、list コマンドを使用した場合にのみ表示スコープを変更します。 表示スコープが設定されると、list コマンド用の行番号位置が表示スコープの最初の行番号に設定されます。続けて list コマンドを使用すると、list コマンド用の現在の行番号位置が更新されますが、現在のファイル内で行をリストしているかぎり表示スコープは変更されません。たとえば、次のコマンドを実行すると、dbxmy_func のソースの先頭を表示し、表示スコープを my_func に変更します。

(dbx) list my_func

次のコマンドを実行すると、dbx は現在のソースファイル内の行 127 を表示しますが、表示スコープは変更しません。

(dbx) list 127

file コマンドまたは func コマンドを使用して現在のファイルまたは現在の関数を変更すると、それに応じて表示スコープが更新されます。