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

印刷ビューの終了

更新: 2016 年 6 月
 
 

check コマンド

check コマンドは、メモリーへのアクセス、メモリーリーク、メモリー使用状況をチェックし、実行時検査 (RTC) の現在のステータスを出力します。ネイティブモードでだけ有効です。

このコマンドによる実行時検査機能は、debug コマンドによって初期状態にリセットされます。

構文

このセクションでは、check コマンドのオプションに関する情報を提供します。

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 によって変更できます。

–access オプション

–access オプションはチェックを有効にします。RTC は、次のエラーを報告します。

baf

不正な領域解放

duf

重複領域解放

maf

境界整列を誤った解放

mar

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

maw

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

oom

メモリー不足

rob

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

rua

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

rui

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

wob

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

wro

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

wua

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

デフォルトの動作は、各アクセスエラーが検出されるとプロセスを停止することです。これを変更するには、rtc_auto_continue dbxenv 変数を使用します。on に設定すると、アクセスエラーがファイルに記録されます。ログファイル名は、dbxenv 変数 rtc_error_log_file_name で制御されます。

デフォルトの場合、それぞれのアクセスエラーが報告されるのは、 最初に発生したときだけです。この動作は、dbxenv 変数 rtc_auto_suppress を使用して変更できます。この変数のデフォルト設定は on です。

–leaks オプション

–leaks オプションの構文は次のとおりです。

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

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

aib

メモリーリークの可能性 – 唯一のポインタがブロックの真ん中を指しています。

air

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

mel

メモリーリーク – ブロックへのポインタが存在しません。

リーク検査を有効にすると、プログラムが存在していれば自動リークレポートが作成されます。このとき、可能性のあるリークを含むすべてのリークが報告されます。デフォルトでは、dbxenv 変数 rtc_mel_at_exit から変更可能な簡易レポートが生成されます。ただし、リークレポートをいつでも要求することができます (showleaks コマンドを参照)。

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

n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は 8 です。

–memuse オプション

–memuse オプションの構文:

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

–memuse オプションは –leaks オプションと同じような動作をし、プログラム終了時、使用中ブロックのレポート (biu) も有効にします。デフォルトでは、dbxenv 変数 rtc_biu_at_exit から変更可能な使用中ブロックの簡易レポートが生成されます。プログラムの実行中にいつでも、プログラム内のメモリーがどこに割り当てられているかを確認できます (showmemuse コマンドを参照)。

–frames n は、メモリーの使用およびリークが報告されるとき、n 個までのスタックフレームが個別に表示されることを示します。–match m を使用して、これらのレポートを組み合わせます。複数のリークの割り当て時に、呼び出しスタックが m 個のフレームに一致した場合、これらのリークは、単一の結合されたメモリーリークレポートで報告されます。

n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は 8 です。

–all オプション

–all オプションの構文:

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

次と同等です。

check –access and check –memuse [–frames n] [–match m]

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