umem_debug - debugging features of the umem library
cc [ flag... ] file... -lumem [ library... ] #include <umem.h>
The libumem library provides debugging features that detect memory leaks, buffer overruns, multiple frees, use of uninitialized data, use of freed data, and many other common programming errors. The activation of the run-time debugging features is controlled by environment variables.
When the library detects an error, it writes a description of the error to an internal buffer that is readable with the ::umem_status mdb(1) dcmd and then calls abort(3C).
UMEM_DEBUG
audit[=frames]
The frames parameter sets the number of stack frames recorded in the auditing structure. The upper bound for frames is implementation-defined. If a larger value is requested, the upper bound is used instead.
If frames is not specified or is not an integer, the default value of 15 is used.
This option also enables the guards option.
contents[=count]
If count is not specified or is not an integer, the default value of 256 is used.
default
guards
When an object is freed, it is filled with 0xdeadbeef. When an object is allocated, the 0xdeadbeef pattern is verified and replaced with 0xbaddcafe. The redzone is checked every time a buffer is allocated or freed.
For caches with either constructors or destructors, or both, umem_cache_alloc(3MALLOC) and umem_cache_free(3MALLOC) apply the cache's constructor and destructor, respectively, instead of caching constructed objects. The presence of assert(3C)s in the destructor verifying that the buffer is in the constructed state can be used to detect any objects returned in an improper state. See umem_cache_create(3MALLOC) for details.
verbose
UMEM_LOGGING
transaction[=size]
contents[=size]
If the "contents" debugging option was not set, 256 bytes of each freed buffer are saved.
fail[=size]
For any of these options, if size is not specified, the default value of 64k is used. The size parameter must be an integer that can be qualified with K, M, G, or T to specify kilobytes, megabytes, gigabytes, or terabytes, respectively.
Logs that are not listed or that have either a size of 0 or an invalid size are disabled.
The log is disabled if during initialization the requested amount of storage cannot be allocated.
See attributes(5) for descriptions of the following attributes:
|
mdb(1), abort(3C), signal(3C), umem_cache_create(3MALLOC), attributes(5)
Solaris Modular Debugger Guide
When libumem aborts the process using abort(3C), any existing signal handler for SIGABRT is called. If the signal handler performs allocations, undefined behavior can result.
Some of the debugging features work only for allocations smaller than 16 kilobytes in size. Allocations larger than 16 kilobytes could have reduced support.
Activating any of the library's debugging features could significantly increase the library's memory footprint and decrease its performance.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |