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

check|uncheck

以下に、checkuncheck の形式を示します。

RTC の現在の状態を出力します。


check

アクセス検査を行います。


check -access

リーク検査を行います。


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

-frames n

リークしたブロックの割り当て追跡を表示するときのスタックフレームの最大数 n を指定します。

-match m

リークをまとめるのに使用します。呼び出しスタックが 2 つ以上のリークを割り当てる際に m 個のフレームと一致した場合は、リークは 1 つにまとめて報告されます。

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

check -memuse には check -leaks の意味も含まれています。プログラム終了時には、リークレポートに加えて、メモリー使用状況レポートも出力されます。プログラム実行中に、プログラムのメモリーがどこに割り当てられているかをいつでも見ることができます。

メモリー使用状況検査をオンにするには、次のように入力します。


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

-frames n

使用中ブロックの割り当てトレースを示すときに、最大 n 個の明確なスタックフレームが一覧表示されます。

-match m

プログラム内に多数の使用中ブロックが存在する可能性があるため、RTC は、同じ実行トレースから割り当てられたブロックを自動的に 1 つのレポートに結合します。レポートを結合するための決定は、m の値によって指定されます。複数ブロックの割り当て時の呼び出しスタックが m フレームと一致する場合、これらのブロックは、結合された使用中ブロックレポートで報告されます。ブロックの結合方法は、リークレポートで使用される方式と似ています。

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

次の 2 つのコマンドは同じ結果になります。


check -all [-frames n] [-match m]
check -access ; check -memuse [-frames n] [-match m]

アクセス検査をオフにします。


uncheck -access

リーク検査をオフにします。


uncheck -leaks

メモリー使用状況検査をオフにします (リーク検査もオフになります)。


uncheck -memuse

次の 2 つのコマンドは同じ結果になります。


uncheck -all
uncheck -access; uncheck -memuse

次の 2 つのコマンドは同じ結果になります。


uncheck [funcs] [files] [loadobjects]
suppress all in funcs files loadobjects

check コマンドの次の形式を使用すると、特定の関数の集合 function*、モジュール file*、ロードオブジェクト loadobject* 内だけで検査をオンにし、プログラムの残りの部分では検査をオフにすることができます。


check function* file* loadobject*

このコマンドは、次と同じ働きをします。


suppress all
unsuppress all in function* file* loadobject*

check コマンドは累計的に機能します。たとえば、次の初めの 3 つのコマンドは、その後の 4 つのコマンドと同じ結果になります。


check main
check foo
check f.c

suppress all
unsuppress all in main
unsuppress all in foo
unsuppress all in f.c

suppress all コマンドは一度だけ適用され、mainfoof.c では検査がオンのままになります。

次の 2 つのコマンドは同じ結果になります。


uncheck function* file* loadobject
suppress all in function* file* loadobject*