ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ Oracle Solaris Studio 12.3 Information Library (日本語) |
check コマンドは、メモリーへのアクセス、メモリーリーク、メモリー使用状況をチェックし、実行時検査 (RTC) の現在状態を出力します。ネイティブモードでだけ有効です。
このコマンドによる実行時検査機能は、debug コマンドによって初期状態にリセットされます。
check -access
アクセス検査を起動します。RTC は、次のエラーを報告します。
不正解放
重複解放
境界整列を誤った解放
境界整列を誤った読み取り
境界整列を誤った書き込み
メモリー不足
配列の範囲外のメモリーからの読み取り
非割り当てメモリーからの読み取り
非初期化メモリーからの読み取り
配列の範囲外のメモリーへの書き込み
読み取り専用メモリーへの書き込み
非割り当てメモリーへの書き込み
デフォルトの場合、各アクセスエラーが検出されるとプロセスが停止されます。このデフォルト動作を変更するには、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 は、次のエラーを報告します。
メモリーリークの可能性 - 唯一のポインタがブロック中央を指す。
メモリーリークの可能性 - ブロックを指すポインタがレジスタ内にのみ存在する。
メモリーリーク - ブロックを指すポインタがない。
リーク検査がオンの場合、プログラムが存在していれば自動リークレポートが作成されます。このとき、可能性のあるリークを含むすべてのリークが報告されます。デフォルトの場合、簡易レポートが作成されます (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]
functions、files、loadobjects における check -all、suppress all、unsuppress all と同じです。
ここで
functions は、1 個または複数の関数名です。
files は、1 個または複数のファイル名です。
loadobjects は、1 個または複数のロードオブジェクト名です。
これを使用することにより、特定の場所を対象として実行時検査を行えます。
注 - RTC ですべてのエラーを検出する際、-g を付けてプログラムをコンパイルする 必要はありません。ただし、特定のエラー (ほとんどは非初期化メモリーから読み取られるもの) の正確さを保証するには、シンボリック (-g) 情報が必要となることがあります。このため、一部のエラー (a.out の rui と共有ライブラリの rui + aib + air) は、シンボリック情報を利用できないときには抑止されます。この動作は、suppress と unsuppress によって変更できます。