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

構文

check -access

アクセス検査を起動します。RTC は、次のエラーを報告します。

baf

不正解放

duf

重複解放

maf

境界整列を誤った解放

mar

境界整列を誤った読み取り

maw

境界整列を誤った書き込み

oom

メモリー不足

rob

配列の範囲外のメモリーからの読み取り

rua

非割り当てメモリーからの読み取り

rui

非初期化メモリーからの読み取り

wob

配列の範囲外のメモリーへの書き込み

wro

読み取り専用メモリーへの書き込み

wua

非割り当てメモリーへの書き込み

デフォルトの場合、各アクセスエラーが検出されるとプロセスが停止されます。このデフォルト動作を変更するには、dbx 環境変数 rtc_auto_continue を使用します。on が設定されている場合、アクセスエラーはファイルに記録されます (ファイル名は dbx 環境変数 rtc_error_log_file_name によって制御します)。dbxenv コマンド」を参照してください。

デフォルトの場合、それぞれのアクセスエラーが報告されるのは、最初に発生したときだけです。この動作を変更するには、dbx 環境変数 rtc_auto_suppress を使用します (この変数のデフォルト値は on です)。dbxenv コマンド」を参照してください。

check -leaks [-frames n] [-match m]

リーク検査をオンにします。RTC は、次のエラーを報告します。

aib

メモリーリークの可能性 - 唯一のポインタがブロック中央を指す。

air

メモリーリークの可能性 - ブロックを指すポインタがレジスタ内にのみ存在する。

mel

メモリーリーク - ブロックを指すポインタがない。

リーク検査がオンの場合、プログラムが存在していれば自動リークレポートが作成されます。このとき、可能性のあるリークを含むすべてのリークが報告されます。デフォルトの場合、簡易レポートが作成されます (dbx 環境変数 rtc_mel_at_exit によって制御します)。ただし、リークレポートをいつでも要求することができます (showleaks コマンド」を参照)。

-frames n は、リーク報告時に最大 n 個のスタックフレームが表示されることを意味します。-match m は、複数のリークをまとめます。2 個以上のリークに対する割り当て時の呼び出しスタックが n 個のフレームに一致するとき、これらのリークは 1 つのリークレポートにまとめて報告されます。

n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は、C++ の場合は 3 で、それ以外は 2 です。

check -memuse [-frames n] [-match m]

-memuse オプションは -leaks オプションと同じような動作をし、プログラム終了時、使用中のブロックのレポート (biu) も有効にします。デフォルトの場合、簡易使用中レポートが生成されます (dbx 環境変数 rtc_biu_at_exit によって制御します)。プログラ ム実行中、プログラムの中でメモリーが割り当てられた場所をいつでも調べることができます (showmemuse コマンド」 参照)。

-frames n は、メモリーの使用状況とリークを報告するときに最大 n 個のスタックフレームが表示されることを意味します。-match m は、複数のリークをまと めます。2 個以上のリークに対する割り当て時の呼び出しスタックが n 個のフレームに一致するとき、これらのリークは 1 つのリークレポートにまとめて報告されます。

n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は、C++ の場合は 3 で、それ以外は 2 です。check -leaks も参照してください。

check -all [-frames n] [-match m]

check -access および check -memuse [-frames n] [-match m] と同じです。

dbx 環境変数 rtc_biu_at_exit の値は check -all によって変更されないので、デフォルトの場合、終了時にメモリー使用状況レポートは生成されません。rtc_biu_at_exit 環境変数については、dbx コマンド」を参照してください。

check [functions] [files] [loadobjects]

functionsfilesloadobjects における check -all、suppress all、unsuppress all と同じです。

ここで

functions は、1 個または複数の関数名です。

files は、1 個または複数のファイル名です。

loadobjects は、1 個または複数のロードオブジェクト名です。

これを使用することにより、特定の場所を対象として実行時検査を行えます。


注 –

RTC ですべてのエラーを検出する際、-g を付けてプログラムをコンパイルする 必要はありません。ただし、特定のエラー (ほとんどは非初期化メモリーから読み取られるもの) の正確さを保証するには、シンボリック (-g) 情報が必要となることがあります。このため、一部のエラー (a.outrui と共有ライブラリの rui + aib + air) は、シンボリック情報を利用できないときには抑止されます。この動作は、suppressunsuppress によって変更できます。