dbx コマンドによるデバッグ

第 2 章 dbx のカスタマイズ

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

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

.dbxrc ファイルの使用

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

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

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

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

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

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

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

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

警告メッセージを抑止するには、コマンドウィンドウに次のように入力します。

help .dbxrc > $HOME/.dbxrc

初期化ファイルの例

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


dbxenv case input_case_sensitive false
catch FPE

最初の行は、大文字/小文字区別の制御のデフォルト設定を変更するものです。dbxenv は、dbx カスタマイズ変数を変更するコマンドです。input_case_sensitive は、大文字/小文字の区別を制御する変数で、false はその制御値です。

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

コマンド参照

dbxenv の構文は次のとおりです。


dbxenv variable

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


dbxenv


注 -

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


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

表 2-1 dbx 環境変数

dbx 環境変数 

dbx 環境変数の機能 

aout_cache_size num

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 が実行されているマシンのタイプに従って、動的にモードを設定します。SPARC プラットフォーム以外では、autodetect だけが有効です。

fix_verbose [on|off]

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

follow_fork_inherit [on|off]

子プロセスを生成した後、イベントを継承するかどうかを設定します。デフォルト値は off です。

follow_fork_mode ...

プロセスが fork/vfork/fork1... を実行した時の動作を設定します。デフォルト値は parent です。

follow_fork_mode parent

親にとどまります。 

follow_fork_mode child

子プロセスを追跡します。 

follow_fork_mode both

親プロセスと子プロセスの両方を追跡します (WorkShop の場合のみ)。 

follow_fork_mode ask

フォークが行われた時、ユーザーに動作をどうするか尋ねます。 

follow_fork_mode_inner [unset|parent|child|both]

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

input_case_sensitive [autodetect|true|false]

autodetect に設定すると、デバッグ対象の言語に従って大文字/小文字の区別が自動的に選択されます。Fortran 77 ファイルの場合は 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_watchpoints [on|off]

マルチスレッドプログラムのウォッチポイント機能を有効または無効にします。デフォルト値は off です。警告 : マルチスレッドプログラムにウォッチポイントを使用する場合、監視中のページでセマフォが発生するとアプリケーションがデッドロックする可能性があることに注意してください。

output_auto_flush [on|off]

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

output_base [8|10|16]

整定数を出力する場合の基数。デフォルト値は 10 です。 

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 num

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 に設定すると、フレームをポップするときに、ローカルの適切なデストラクタを自動的に呼び出します。

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 num

報告される RTC エラーの数。デフォルト値は 1000 です。 

rtc_error_log_file_name filename

rtc_auto_continue が設定されている場合に、RTC エラーが記録されるファイル名。デフォルト値は /tmp/dbx.errlog.uniqueID です。

rtc_mel_at_exit [on|off|verbose]

リーク検査がオンの場合に使用されます。この値が 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_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 がすべてのコマンドとその出力を記録するファイルの名前。出力はこのファイルに追加されます。デフォルト値は "" (セッション記録なし) です。

stack_max_size num

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

stack_verbose [on|off]

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

step_events [on|off]

stepnext の間ブレークポイントを許可します。デフォルト値は off です。

suppress_startup_message num

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

symbol_info_compression [on|off]

include ファイルのデバッグ情報を一回だけ読み取ります。デフォルト値は on です。

trace_speed num

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