check Command

Related Topics:

uncheck Command suppress Command
Runtime Checking debug Command

The check command enables checking of memory access, leaks, or usage, and prints the current status of runtime checking (RTC). The features of runtime checking that are enabled by this command are reset to their initial state by the debug command.

Syntax

check -access

Turn on access checking. RTC reports the following errors:

baf Bad free
duf Duplicate free
maf Misaligned free
mar Misaligned read
maw Misaligned write
oom Out of memory
rua Read from unallocated memory
rui Read from uninitialized memory
wro Write to read-only memory
wua Write to unallocated memory

The default behavior is to stop the process after detecting each access error, which can be changed using the rtc_auto_continue dbx environment variable. When set to on access errors are logged to a file (the file name is controlled by the dbx environment variable rtc_error_log_file_name ). See dbxenv Command

By default each unique access error is only reported the first time it happens. Change this behavior using the dbx environment variable rtc_auto_suppress (the default setting of this variable is on). See dbxenv Command.

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

Turn on leak checking. RTC reports the following errors:
aib Possible memory leak - only pointer points in the middle of the block
air Possible memory leak - pointer to the block exists only in register
mel Memory leak - no pointers to the block

With leak checking turned on, you get an automatic leak report when the program exits. All leaks including possible leaks are reported at that time. By default, a non-verbose report is generated (controlled by the dbx environment variable rtc_mel_at_exit). However, you can ask for a leak report at any time (see showleaks Command).

-frames n implies that up to n distinct stack frames are displayed when reporting leaks. -match m is used for combining leaks; if the call stack at the time of allocation for two or more leaks matches n frames, then these leaks are reported in a single combined leak report.

The default value of n is 8 or the value of m (whichever is larger). Maximum value of n is 16. The default value of m is 2.

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

Turn on memory use (memuse) checking. check -memuse also implies check -leaks. In addition to a leak report at program exit,you also get a blocks in use (biu) report. By default a non-verbose blocks in use report is generated (controlled by the dbx environment variable rtc_biu_at_exit) At any time during program execution you can see where the memory in your program has been allocated (see showmemuse Command).

-frames n implies that upto n distinct stack frames will be displayed while reporting memory use and leaks. -match m is used for combining these reports; if the call stack at the time of allocation for two or more leaks matches m frames, then these are reported in a single combined memory leak report.

The default value of n is 8 or the value of m (whichever is larger). Maximum value of n is 16. The default value of m is 2. See check -leaks as well.

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

Equivalent to check -access or check -memuse [-frames n] [-match m]'

The value of the dbx environment variable rtc_biu_at_exit is not changed with check -all, so by default no memory use report is generated at exit. See dbx Command for the description of the rtc_biu_at_exit environment variable.

check [functions] [files] [loadobjects]

Equivalent to check -all or suppress all or unsuppress all in functions, files, and loadobjects

where:

functions is one or more function names.

files is one or more file names.

loadobjects is one or more loadobject names

You can use this to focus runtime checking on places of interest.


Note - To detect all errors, RTC does not require the program be compiled -g. However, symbolic (-g) information is sometimes needed to guarantee the correctness of certain errors (mostly read from uninitialized memory). For this reason certain errors (rui for a.out and rui + aib + air for shared libraries) are suppressed if no symbolic information is available. This behavior can be changed by using suppress and unsuppress.