dbx コマンドによるデバッグ ホーム目次前ページへ次ページへ索引


第 2 章

dbx のカスタマイズ

この章では、デバッグ環境の特定の属性をカスタマイズするために使用できる dbx 環境変数と、初期化ファイル .dbxrc を使用してカスタマイズの内容をセッション間で保存する方法について説明します。

この章の内容は次のとおりです。

.dbxrc ファイルの使用

dbx 初期化ファイル .dbxrc は、dbx を起動するたびに実行する dbx コマンドを保存します。通常このファイルには、デバッグ環境をカスタマイズするコマンドを記述しますが、任意の dbx コマンドを記述することもできます。デバッグ中に dbx をコマンド行からカスタマイズする場合、これらの設定値は、現在デバッグ中のセッションにしか適用されないことに注意してください。


注 - .dbxrc ファイルは、コードを実行するコマンドを含むことはできません。ただし、それらのコマンドをファイルに置き、dbx source コマンドを使用して、そのファイルでコマンドを実行することは可能です。

dbx はまず起動時に .dbxrc を検索します。検索順序は次のとおりです。

  1. 現在のディレクトリ ./.dbxrc

  2. ホームディレクトリ $HOME/.dbxrc

.dbxrc が見つからない場合、dbx は警告メッセージを出して、.dbxinit を検索します (dbx モード)。

検索順序は次のとおりです。

  1. 現在のディレクトリ ./.dbxinit

  2. ホームディレクトリ $HOME/.dbxinit

.dbxrc ファイルの作成

警告メッセージを抑制し、共通のカスタマイズおよびエイリアスを含む .dbxrc ファイルを作成するには、コマンド区画に次のように入力します。

help .dbxrc>$HOME/.dbxrc

テキストエディタを使用して、結果的にできたファイルをカスタマイズすることにより、実行したいエントリをコメント解除することができます。

初期化ファイル

次に .dbxrc ファイルの例を示します。

dbxenv case input_case_sensitive false
catch FPE

最初の行は、大文字/小文字区別の制御のデフォルト設定を変更するものです。

次の行はデバッグコマンドの catch です。シグナル FPE を捕獲するように設定しています。

詳細については、Sun WorkShop オンラインヘルプの「dbx コマンドの使い方」の「.dbxrc ファイルの典型的な項目」、「.dbxrc ファイルの有用な別名」、「.dbxrc ファイルの有用な関数」を参照してください。

dbx 環境変数と Korn シェル

それぞれの dbx 環境変数は、ksh 変数としてアクセスすることもできます。ksh 変数の名前は、DBX_ を前に付けて、dbx 環境変数から引き出されます。たとえば、dbxenv stack_verboseecho $DBX_stack_verbose の出力は同じです。

Sun WorkShop での dbx カスタマイズ

シェルのコマンド行からと同様、Sun WorkShop デバッグの dbx コマンドウィンドウで dbx を使用することにより、Sun WorkShop デバッグのカスタマイズ機能を活用して dbx を効率的に利用することができます。

デバッグオプションの設定

Sun WorkShop デバッグの dbx コマンドウィンドウで dbx を最初に使用する場合、「デバッグオプション」ダイアログで、dbx 環境変数を設定する必要があります。Sun WorkShop オンラインヘルプの「デバッグウィンドウの使い方」の「デバッグオプションダイアログ」を参照してください。

「デバッグオプション」ダイアログを使用してデバッグオプションを設定すると、対応する環境変数への dbxenv コマンドが Sun WorkShop 構成ファイル .workshoprc に保存されます。「デバッグ」ウィンドウでプログラムのデバッグを開始すると、.workshoprc ファイルの設定と衝突する .dbxrc ファイルでの設定が優先されます。

統一されたオプションセットの維持

シェルのコマンド行および Sun WorkShop 内の両方から dbx を使用する場合、両方のモードに対して dbx をカスタマイズする、統一されたオプションセットを作成することができます。

統一されたオプションセットを作成するには、次の操作を行います。

1. 「デバッグ」ウィンドウで、「デバッグ」 「デバッグ用オプション」を選択します。

2. 各オプションを設定して「了解」をクリックすると、現在の値がデフォルト値になります。

3. エディタウィンドウで、.dbxrc ファイルを開きます。

4. 最上部付近に、source $HOME/.workshoprc の行を入力します。

5. 関連する dbxenv コマンドをソース行の後の位置へ移動するか、それらを削除またはコメントアウトします。

6. ファイルを保存します。

「デバッグオプション」ダイアログでなされた変更は、Sun WorkShop の使用時およびシェルでの実行時の両方で、dbx に適用されます。

2 組のオプション維持

Sun WorkShop 内、およびシェルでコマンド行から dbx を実行するための異なるオプション設定を維持するには、.dbxrc ファイルの havegui 変数を使用して、dbxenv コマンドを条件付にすることができます。たとえば次のようになります。

 if $havegui
   then
      dbxenv follow_fork_mode ask
      dbxenv stack_verbose on
   else
       dbxenv follow_fork_mode parent
       dbxenv stack_verbose off

カスタムボタンの保存

Sun WorkShop デバッグには、「カスタムボタン」ウィンドウ (および「デバッグ」ウィンドウおよびエディタウィンドウのツールバー) で、ボタンを追加、削除、編集するための「ボタン編集」ダイアログが提供されています。.dbxrc ファイルにボタンを保存するために button コマンドを使用する必要はありません。「ボタン編集」ダイアログでは、.dbxrc ファイルへのボタンの追加、またはボタンの削除を行うことはできません。

「ボタン編集」ダイアログでは、.dbxrc ファイルに保存されたボタンを永久に削除することはできません。ボタンは、次のデバッグセッションで再表示されます。それらのボタンを削除するには、.dbxrc ファイルを編集してください。

dbxenv コマンドでの dbx 環境変数の設定

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

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

(dbx) dbxenv variable

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

(dbx) dbxenv

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

(dbx) dbxenv variable value


注 - 各変数には、DBX_trace_speed のように対応する ksh 環境変数があります。この変数を直接割り当てることも、dbxenv コマンドを使用することもできます。どちらでも結果は同じです。

以下に、設定可能なすべての dbx 環境変数を示します。

表 2-1   dbx 環境変数 
dbx 環境変数 dbx 環境変数の機能
allow_critical_exclusion on|off 通常、loadobject -x は、dbx 機能に欠かせない特定の共有ライブラリの排除を許可しません。この変数を on に設定すると、その制限が解除されます。この変数が on の場合のみ、コアファイルをデバッグすることができます。デフォルト値は off です。
aout_cache_size number a.out ロードオブジェクトのキャッシュサイズ。単一の dbx から順に num 個のプログラムをデバッグする場合は num に設定してください。num をゼロに設定しても、共有オブジェクトのキャッシュを行うことはできます。locache_enable の項目を参照してください。デフォルト値は 1 です。
array_bounds_check on|off パラメータを on に設定すると、配列の上下限を検査します。デフォルト値は on です。
cfront_demangling on|off プログラムの読み込み中、Cfront (SC 2.0 と SC 2.0.1) 名の復号化を制御します。Cfront によってコンパイルされたプログラムまたは Cfront コンパイルライブラリによってリンクされたプログラムをデバッグする場合は、パラメータを on に設定するか、または -F オプションをつけて dbx を起動する必要があります。off に設定すると、dbx によるプログラムの読み込み速度はおよそ 15% 速くなります。デフォルト値は off です。
delay_xs on|off -xs オプションでコンパイルされたモジュールのデバッグ情報を、dbx の起動時に読み込むか、あるいは遅延させるかを制御します。
disassembler_version autodetect|v8|v9|v9vis SPARC プラットフォームでの SPARC V8、V9、またはビジュアル命令セットを持つ V9 のいずれかの逆アセンブラのバージョンを設定します。デフォルト値は autodetect で、a.out が実行されているマシンのタイプに従って、動的にモードを設定します。Intel プラットフォーム以外では、autodetect だけが有効です。
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 77 および Fortran 95 ファイルの場合は false、そうでない場合は true です。true の場合は、変数と関数名では大文字/小文字が区別されます。変数と関数名以外では、大文字/小文字は区別されません。デフォルト値は autodetect です。
language_mode autodetect|main|c| ansic|c++|objc|fortran|
fortran90|native_java
式の構文解析と評価に使用される言語を指定します。autodetect では、デバッグ中のファイルの言語が設定されます。これは複数の言語を使用するプログラムをデバッグするときに便利です (デフォルトモード)。main では、プログラムのメインルーチンの言語が設定されます。これは同機種プログラムをデバッグするときに便利です。cc++ansicobjcfortranfortran90 および native_java では、それぞれ指定の言語に設定されます。
locache_enable on|off ロードオブジェクトキャッシュを有効または無効にします。デフォルト値は on です。
mt_scalable on|off 有効の場合、dbx はリソースの使用方法において保守的となり、300 個以上の LWP を持つプロセスのデバッグが可能です。下方サイドは大幅に速度が減少します。デフォルト値は off です。
output_auto_flush on|off 呼び出しが行われるたびに、fflush() を自動的に呼び出します。デフォルト値は on です。
output_base 8|10|16 automatic 整数の定数を出力するためのデフォルト基数。デフォルト値は automatic です (ポインタは 16 進文字、その他すべては 10 進)。
output_dynamic_type on|off on の場合、出力、表示、および検査のデフォルト出力を -d にします。デフォルト値は off です。
output_inherited_members on|off on の場合、出力、表示、および検査のデフォルト出力を -r にします。デフォルト値は off です。
output_list_size number list コマンドで出力する行のデフォルト数を指定します。デフォルト値は 10 です。
output_log_file_name filename コマンドログファイルの名前。デフォルト値は /tmp/dbx.log uniqueID です。
output_max_string_length number char * で出力される文字数を設定します。デフォルト値は 512 です。
output_pretty_print on|off 出力、表示、および検査の出力デフォルトを -p に設定します。デフォルト値は off です。
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 に設定すると、フレームをポップするときに、ローカルの適切なデストラクタを自動的に呼び出します。
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 -memuse が明示的に、または check -all によって on になっている場合に使用されます。この値が on だと、簡易メモリー使用状況 (使用中ブロック) レポートがプログラムの終了時に作成されます。値が verbose の場合は、詳細メモリー使用状況レポートがプログラムの終了時に作成されます。値が off の場合、出力は生成されません。デフォルト値は on です。
rtc_error_limit number 報告される RTC エラーの数。デフォルト値は 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 の場合は、簡易メモリーリークレポートがプログラムの終了時に作成されます。値が verbose の場合は、詳細メモリーリークレポートがプログラムの終了時に作成されます。off の場合は出力は生成されません。デフォルト値は on です。
rtc_use_traps on|off ランタイムチェック時の 8 MG コード制限への対策を有効にします。on に設定すると、dbx は UltraSparc トラップ命令 (提供される場合) を使用します。デフォルト値は off です。
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_iopty に設定されているときに使用する pty の名前を設定します。pty は GUI のラッパで使用されます。
run_quick on|off on の場合、シンボリック情報は読み込まれません。シンボリック情報は、prog -readsysms を使用して要求に応じて読み込むことができます。それまで dbx は、デバッグ中のプログラムがストリップされているかのように動作します。デフォルト値は off です。
run_savetty on|off dbx と デバッグ対象の間で、tty 設定、プロセスグループ、およびキーボード設定 (-kbd がコマンド行で使用されている場合) を多重化します。エディタやシェルをデバッグする際に便利です。dbx が SIGTTIN または SIGTTOU を取得しシェルに戻る場合は、on に設定します。速度を多少上げるには off に設定します。dbx がデバッグ対象に接続されるか WorkShop のもとで動作しているかということには無関係です。デフォルト値は on です。
run_setpgrp on|off on の場合、プログラムが実行時に、フォークの直後に setpgrp(2) が呼び出されます。デフォルト値は off です。
scope_global_enums on|off on の場合、列挙子の有効範囲はファイルスコープではなく大域スコープになります。デバッグ情報を処理する前に設定する必要があります (〜/.dbxrc)。デフォルト値は off です。
scope_look_aside on|off ファイルの静的シンボルが、ファイルスコープにない場合でもそれを検出します。デフォルト値は on です。
session_log_file_name filename dbx がすべてのコマンドとその出力を記録するファイルの名前。出力はこのファイルに追加されます。デフォルト値は "" (セッション記録なし) です。
satck_find_source on|off on に設定した場合、デバッグ中のプログラムが -g オプションなしでコンパイルされた指定の関数で停止したとき、dbx はソースを持つスタックフレームを検索し、自動的にポップアップを試みます。デフォルト値は on です。
stack_max_size number where コマンドにデフォルトサイズを設定します。デフォルト値は 100 です。
stack_verbose on|off where コマンドでの引数と行情報の出力を指定します。デフォルト値は on です。
step_events on|off stepnext の間ブレークポイントを許可します。デフォルト値は 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 include ファイルのデバッグ情報を一回だけ読み取ります。デフォルト値は on です。
trace_speed number トレース実行の速度を設定します。値は、ステップ間の休止秒数になります。デフォルト値は 0.50 です。



サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
ホーム   |   目次   |   前ページへ   |   次ページへ   |   索引