check コマンドは、メモリーへのアクセス、メモリーリーク、メモリー使用状況をチェックし、実行時検査 (RTC) の現在のステータスを出力します。ネイティブモードでだけ有効です。
このコマンドによる実行時検査機能は、debug コマンドによって初期状態にリセットされます。
このセクションでは、check コマンドのオプションに関する情報を提供します。
check [functions] [files] [loadobjects]
functions、files、loadobjects における check –all、suppress all、unsuppress all と同じです。
ここでは:
functions は、1 個または複数の関数名です。
files は、1 個または複数のファイル名です。
loadobjects は、1 つまたは複数のロードオブジェクト名です。
これを使用することにより、特定の場所を対象として実行時検査を行えます。
–access オプションはチェックを有効にします。RTC は、次のエラーを報告します。
不正な領域解放
重複領域解放
境界整列を誤った解放
境界整列を誤った読み取り
境界整列を誤った書き込み
メモリー不足
配列の範囲外のメモリーからの読み取り
非割り当てメモリーからの読み取り
非初期化メモリーからの読み取り
配列の範囲外のメモリーへの書き込み
読み取り専用メモリーへの書き込み
非割り当てメモリーへの書き込み
デフォルトの動作は、各アクセスエラーが検出されるとプロセスを停止することです。これを変更するには、rtc_auto_continue dbxenv 変数を使用します。on に設定すると、アクセスエラーがファイルに記録されます。ログファイル名は、dbxenv 変数 rtc_error_log_file_name で制御されます。
デフォルトの場合、それぞれのアクセスエラーが報告されるのは、 最初に発生したときだけです。この動作は、dbxenv 変数 rtc_auto_suppress を使用して変更できます。この変数のデフォルト設定は on です。
–leaks オプションの構文は次のとおりです。
check –leaks [–frames n] [–match m]
リーク検査を有効にします。RTC は、次のエラーを報告します。
メモリーリークの可能性 – 唯一のポインタがブロックの真ん中を指しています。
メモリーリークの可能性 - ブロックを指すポインタがレジスタ内にのみ存在します
メモリーリーク – ブロックへのポインタが存在しません。
リーク検査を有効にすると、プログラムが存在していれば自動リークレポートが作成されます。このとき、可能性のあるリークを含むすべてのリークが報告されます。デフォルトでは、dbxenv 変数 rtc_mel_at_exit から変更可能な簡易レポートが生成されます。ただし、リークレポートをいつでも要求することができます (showleaks コマンドを参照)。
–frames n は、リーク報告時に最大 n 個のスタックフレームが表示されることを意味します。–match m は、複数のリークを組み合わせるために使用します。複数のリークに対する割り当て時の呼び出しスタックが n 個のフレームに一致するとき、これらのリークは 1 つのリークレポートにまとめて報告されます。
n のデフォルト値は、8 または m の値です (どちらか大きい方)。n の最大値は 16 です。m のデフォルト値は 8 です。
–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 オプションの構文:
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 を参照してください。