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

dbx 環境変数の設定

dbxenv コマンドを使用して dbx 環境変数を設定することにより、dbx セッションをカスタマイズすることができます。

特定の変数の値を表示するには、次のように入力します。


(dbx) dbxenv variable

すべての変数とその値を表示するには、次のように入力します。


(dbx) dbxenv

変数の値を設定するには、次のように入力します。


(dbx) dbxenv variable value

表 3–1 に、設定可能なすべての dbx 環境変数を示します。

表 3–1 dbx 環境変数

dbx 環境変数

dbx 環境変数の機能  

array_bounds_check on|off

パラメータを on に設定すると、配列の上下限を検査します。

デフォルト値は on です。

c_array_op on | off

C および C++ では、配列演算が可能です。たとえば、ab が配列の場合、コマンド print a+b を使用できます。デフォルト値は on です。

CLASSPATHX

独自のクラスローダーを使用する場合に、そのローダーが読み込む Java クラスファイルのパスを指定することができます。

core_lo_pathmap on|off

dbx が一致しないコアファイルの正しいライブラリを検索するためにパスマップ設定を使用するかどうかを制御します。デフォルト値は off です。

debug_file_directory

大域デバッグファイルディレクトリを設定します。デフォルト値は /usr/lib/debug です。

disassembler_version autodetect|v8|v9|x86_32|x86-64

SPARC プラットフォームの SPARC V8 または V9 の dbx の組み込み逆アセンブラのバージョンを設定します。デフォルト値は autodetect で、a.out が実行されているマシンのタイプに従って、動的にモードを設定します。

x86 プラットフォーム: dbx の x86_32 または x86_64 用内蔵型逆アセンブラのバージョンを設定します。デフォルト値は autodetect で、a.out が実行されているマシンのタイプに従って、動的にモードを設定します。

event_safety on | off

dbx を安全でないイベント使用に対して保護します。デフォルト値は on です。

fix_verbose on|off

fix 中のコンパイル行出力を制御します。デフォルト値は off です。

follow_fork_inherit on|off

子プロセスを生成したあと、ブレークポイントを継承するかどうかを設定します。デフォルト値は off です。

follow_fork_mode parent|child|both|ask

現在のプロセスが forkvforkfork1 を実行しフォークした場合、どのプロセスを追跡するかを決定します。parent に設定すると親を追跡します。child に設定すると子を追跡します。both に設定すると、親プロセスをアクティブ状態にして子を追跡します。ask に設定すると、フォークが検出されるたびに、追跡するプロセスを尋ねます。デフォルト値は parent です。

follow_fork_mode_inner unset|

parent|child|both

フォークが検出されたあと、follow_fork_modeask に設定されていて、停止を選んだときの設定です。この変数を設定すると、cont -follow を使用する必要はありません。

input_case_sensitive autodetect|

true|false

autodetect に設定すると、ファイルの言語に従って大文字/小文字の区別が自動的に選択されます。Fortran ファイルの場合は false、そうでない場合は true です。true の場合は、変数と関数名では大文字/小文字が区別されます。変数と関数名以外では、大文字/小文字は区別されません。

デフォルト値は autodetect です。

JAVASRCPATH

dbx が Java ソースファイルを検索するディレクトリを指定します。

jdbx_mode java| jni| native

現在の dbx モードを設定します。次のように設定できます。javajninative

jvm_invocation

jvm_invocation 環境変数を使って、JVM ソフトウェアの起動方法をカスタマイズすることができます (JVM は Java virtual machine の略語で、Java プラットフォーム用の仮想マシンを意味します)。詳細については、「JVM ソフトウェアの起動方法のカスタマイズ」を参照してください。

language_mode autodetect|main|c| c++|fortran|fortran90

式の解析と評価に使用する言語を制御します。 

  • autodetect は、式の言語を現在のファイルの言語に設定します。複数の言語が混在するプログラムをデバッグする場合に有用です (デフォルト)。

  • main は、式の言語をプログラム内の主ルーチンの言語に指定します。単一言語のデバッグをする場合に有用です。

  • cc++fortran、または fortran90 は、式の言語を選択した言語に設定します。

mt_resume_one on | off | auto

off に設定した場合、デッドロックを防ぐため、next コマンドによって呼び出しに対するステップを実行中にすべてのスレッドが再開されます。on に設定した場合、next コマンドによって呼び出しに対するステップを実行中に現在のスレッドのみが再開されます。auto に設定した場合、動作は off に設定した場合と同じです。ただし、プログラムがトランザクション管理アプリケーションで、トランザクション内でステップを実行している場合は、現在のスレッドのみが再開されます。デフォルト値は off です。

mt_scalable on|off

有効の場合、dbx はリソースの使用方法において保守的となり、300 個以上の LWP を持つプロセスのデバッグが可能です。下方サイドは大幅に速度が減少します。デフォルト値は off です。

mt_sync_tracing on | off

同期オブジェクトがプロセスを開始した際に、dbx が同期オブジェクトの追跡をオンにするかどうかを決定します。デフォルト値は on です。

output_auto_flush on|off

call が行われるたびに、fflush() を自動的に呼び出します。デフォルト値は on です。

output_base 8|10|16|automatic

整数の定数を出力するためのデフォルト基数。デフォルト値は automatic です (ポインタは 16 進文字、その他すべては 10 進)。

output_class_prefix on | off

クラスメンバーの値または宣言を表示するとき、その前に 1 つまたは複数のクラス名を付けるかどうかを制御します。on の場合は、クラスメンバーの前にクラス名が付けられます。デフォルト値は on です。

output_dynamic_type on|off

on の場合、ウォッチポイントの出力および表示のデフォルトを -d にします。デフォルト値は off です。

output_inherited_members on|off

on の場合、出力、表示、および検査のデフォルト出力を -r にします。デフォルト値は off です。

output_list_size num

list コマンドで出力する行のデフォルト数を指定します。デフォルト値は 10 です。

output_log_file_name filename

コマンドログファイルの名前。 

デフォルト値は /tmp/dbx.log.uniqueID です。

output_max_string_length number

char *s で出力される文字数を設定します。デフォルト値は 512 です。

output_no_literal on|off

有効にすると、式が文字列 (char *) の場合は、アドレスのみが出力され、文字は出力されません。デフォルト値は off です。

output_pretty_print on|off

ウォッチポイントの出力および表示のデフォルトを -p に設定します。デフォルト値は off です。

output_pretty_print_fallback on|off

デフォルトで、問題が発生した場合、pretty-print は標準出力に戻されます。pretty-print の問題を診断する場合は、この変数を off に設定して、フォールバックを回避します。デフォルト値は on です。

output_short_file_name on|off

ファイル名を表示するときに短形式で表示します。デフォルト値は on です。

overload_function on|off

C++ の場合、on に設定すると、自動で多重定義された関数の解決を行います。デフォルト値は on です。

overload_operator on|off

C++ の場合、on に設定すると、自動で多重定義された演算子の解決を行います。デフォルト値は on です。

pop_auto_destruct on|off

on に設定すると、フレームをポップするときに、ローカルの適切なデストラクタを自動的に呼び出します。デフォルト値は on です。

proc_exclusive_attach on|off

on に設定すると、別のツールがすでに接続されている場合、dbx をプロセスへ接続しないようにします。警告: 複数のツールが 1 つのプロセスに接続している状態でプロセスを制御しようとすると、混乱が生じるので注意してください。デフォルト値は on です。

rtc_auto_continue on|off

rtc_error_log_file_name にエラーを記録して続行します。デフォルト値は off です。

rtc_auto_suppress on|off

on に設定すると、特定の位置の RTC エラーが一回だけ報告されます。デフォルト値は off です。

rtc_biu_at_exit on|off|verbose

メモリー使用検査が明示的に、または check -all によって on になっている場合に使用されます。この値が on だと、簡易メモリー使用状況 (使用中ブロック) レポートがプログラムの終了時に作成されます。値が verbose の場合は、詳細メモリー使用状況レポートがプログラムの終了時に作成されます。off の場合は出力は生成されません。デフォルト値は on です。

rtc_error_limit number

報告される RTC アクセスエラーの Number。デフォルト値は 1000 です。

rtc_error_log_file_name filename

rtc_auto_continue が設定されている場合に、RTC エラーが記録されるファイル名。デフォルトのモードは

/tmp/dbx.errlog.uniqueID です。

rtc_error_stack on|off

on に設定すると、スタックトレースは、RTC 内部機構へ対応するフレームを示します。デフォルト値は off です。

rtc_inherit on|off

on に設定すると、デバッグプログラムから実行され る子プロセスでランタイムチェックを有効にし、環境変数 LD_PRELOAD が継承されます。デフォルト値は off です。

rtc_mel_at_exit on|off|verbose

リーク検査が on の場合に使用されます。この値が on の場合は、簡易メモリーリークレポートがプログラムの終了時に作成されます。値が verbose の場合は、詳細メモリーリークレポートがプログラムの終了時に作成されます。off の場合は出力は生成されません。デフォルト値は on です。

run_autostart on|off

dbx で実行中でないプログラムで on の場合、stepnextstepi、および nexti を実行した場合、暗黙指定で run を実行し、言語依存のメインルーチンで停止します。on の場合、cont は必要に応じて run を暗黙指定します。

デフォルト値は off です。

run_io stdio|pty

ユーザープログラムの入出力が、dbxstdio か、または特定の pty にリダイレクトされるかどうかを指定します。pty は、run_pty によって指定します。デフォルト値は stdio です。

run_pty ptyname

run_io が pty に設定されているときに使用する pty の名前を設定します。pty は GUI のラッパで使用されます。

run_quick on|off

on の場合、シンボリック情報は読み込まれません。シンボリック情報は、prog -readsysms を使用して要求に応じて読み込むことができます。それまで、dbx は、デバッグ中のプログラムがストリップされているかのように動作します。デフォルト値は off です。

run_savetty on | off

dbx とデバッグ対象の間で、tty 設定、プロセスグループ、およびキーボード設定 (-kbd がコマンド行で使用されている場合) を多重化します。エディタやシェルをデバッグする際に便利です。dbxSIGTTIN または SIGTTOU を取得しシェルに戻る場合は、on に設定します。速度を多少上げるには off に設定します。dbx がデバッグ対象プログラムに接続されているのか、Oracle Solaris Studio IDE のもとで動作しているのかということには無関係です。デフォルト値は off です。

run_setpgrp on | off

on の場合プログラムが実行時に、フォークの直後に setpgrp(2) が呼び出されます。デフォルト値は off です。

scope_global_enums on | off

on の場合、列挙子の有効範囲はファイルスコープではなく大域スコープになります。デバッグ情報を処理する前に設定する必要があります (~/ .dbxrc)。デフォルト値は off です。

scope_look_aside on | off

on に設定した場合、ファイルの静的シンボルが、現在のファイルスコープにない場合でもそれを検出します。デフォルト値は on です。

session_log_file_name filename

dbx がすべてのコマンドとその出力を記録するファイルの名前。出力はこのファイルに追加されます。デフォルト値は "" (セッション記録なし) です。

show_static_members

on の場合、印刷、監視、表示のデフォルトは -S になります。デフォルト値は on です。

stack_find_source on | off

on に設定した場合、デバッグ中のプロラムが -g オプションなしでコンパイルされた指定の関数で停止したとき、dbx はソースを持つ最初のスタックフレームを検索し、自動的にアクティブにします。

デフォルト値は on です。

stack_max_size number

where コマンドにデフォルトサイズを設定します。デフォルト値は 100 です。

stack_verbose on | off

where コマンドでの引数と行情報の出力を指定します。 デフォルト値は on です。

step_abflow stop|ignore

stop に設定されていると、シングルステップ実行時に dbxlongjmp()siglongjmp() で停止し、文を送出します。ignore に設定されていると、dbxlongjmp() および siglongjmp() の異常制御フロー変更を検出しません。

step_events on |off

on に設定すると、ブレークポイントを許可する一方で、step および next コマンドを使用してコードをステップ実行できます。デフォルト値は off です。

step_granularity statement | line

ソース行ステップの細分性を制御します。statement に設定すると、次のコード

a(); b();

を、実行するための 2 つの next コマンドが必要です。line に設定すると、1 つの next コマンドでコードを実行します。複数行のマクロを処理する場合、行の細分化は特に有用です。デフォルト値は statement です。

suppress_startup_message number

リリースレベルを設定して、それより下のレベルでは起動メッセージが表示されないようにします。デフォルト値は 3.01 です。 

symbol_info_compression on|off

on に設定した場合、各 include ファイルのデバッグ情報を 1 回だけ読み取ります。デフォルト値は on です。

trace_speed number

トレース実行の速度を設定します。値は、ステップ間の休止秒数になります。 

デフォルト値は 0.50 です。 

vdl_mode classic | lisp | xml

データ構造と dbx 用のグラフィカルユーザーインターフェース (GUI) が通信するために、値記述言語 (VDL) を使用します。classic モードは、Sun WorkShop IDE に使用されました。lisp モードは、Sun Studio および Oracle Solaris Studio リリースの IDE で使用されます。xml モードは試験的なもので、サポートされていません。デフォルト: 値は GUI によって設定されます。